IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

Comment réaliser simplement un tel menu graphique en tant qu'activité ?


Sujet :

Composants graphiques Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de tails
    Homme Profil pro
    Inscrit en
    Novembre 2003
    Messages
    799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 799
    Billets dans le blog
    15
    Par défaut Comment réaliser simplement un tel menu graphique en tant qu'activité ?
    Bonjour,

    je voudrais réaliser le menu suivant (ou similaire) sous Android en tant qu'activité de démarrage :

    Nom : Android_SimpleMenu.png
Affichages : 371
Taille : 279,9 Ko

    Existe-t-il une librairie permettant de la réaliser simplement ? Ou alors au niveau de l'api standard ?

    Ma configuration d'application :
    MinSdk => 8
    TargetSDK => 19
    Supports Libraries : v4

    Je vous remercie d'avance

  2. #2
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 273
    Par défaut
    tu n'a pas forcement besoin de librairie pour faire quelque chose comme ça, si c'est un menu statique que tu veux ( juste que l'application démarre sur cette activité avec la possibilité de cliquer sur les icônes )

    tu peux tout simplement mettre en background l'image de fond dans ton xml, ajouter des imagebutton, chacune avec l'image de l'icône que tu veux, puis les implémenter dans ta MainActivity ( ou une autre, mais si tu veux que l'appli commence par une autre activité, tu va devoir faire une petite modification dans ton manifest ) puis ajouter des setonclicklistener aux imagebutton pour choisir l'action a effectuer lors du clic d'un des boutons du menu ( je ne sais pas si j'ai été assez clair, dit moi si tu n'a pas compris )

    selon moi, c'est la solution la plus simple ( a part si tu veux quelque chose de dynamique, mais il te faudra ajouter tout ça directement dans ton activité )

  3. #3
    Membre émérite
    Avatar de tails
    Homme Profil pro
    Inscrit en
    Novembre 2003
    Messages
    799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 799
    Billets dans le blog
    15
    Par défaut
    Citation Envoyé par danieldou Voir le message
    tu n'a pas forcement besoin de librairie pour faire quelque chose comme ça, si c'est un menu statique que tu veux ( juste que l'application démarre sur cette activité avec la possibilité de cliquer sur les icônes )
    C'est vrai qu'à l'heure actuelle on a plus tendance à chercher à réutiliser ... Or ici, comme tu me le démontres par la suite, je peux largement m'en affranchir


    Citation Envoyé par danieldou Voir le message
    tu peux tout simplement mettre en background l'image de fond dans ton xml, ajouter des imagebutton, chacune avec l'image de l'icône que tu veux, puis les implémenter dans ta MainActivity ( ou une autre, mais si tu veux que l'appli commence par une autre activité, tu va devoir faire une petite modification dans ton manifest ) puis ajouter des setonclicklistener aux imagebutton pour choisir l'action a effectuer lors du clic d'un des boutons du menu ( je ne sais pas si j'ai été assez clair, dit moi si tu n'a pas compris )
    Au besoin (le sujet restera tout de même résolu, car ta réponse est précise et semble bien résoudre mon problème) je reviens dans la discussion


    Citation Envoyé par danieldou Voir le message
    selon moi, c'est la solution la plus simple ( a part si tu veux quelque chose de dynamique, mais il te faudra ajouter tout ça directement dans ton activité )
    Pourquoi faire compliqué (et lourd !) quand on peut faire simple (et léger !).

    En tous cas, merci à toi

  4. #4
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 273
    Par défaut
    n'hésite pas si tu a d'autres questions, bonne continuation

  5. #5
    Membre émérite
    Avatar de tails
    Homme Profil pro
    Inscrit en
    Novembre 2003
    Messages
    799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 799
    Billets dans le blog
    15
    Par défaut
    Oui merci

    Justement, je rencontre un soucis avec la librairie de compatibilité version 7 pour les gridlayout (dont j'ai besoin pour réaliser le menu en question) :

    • Je l'ai importée dans le projet et ajoutée en tant que librairie privée Android (en la mettant dans le dossier libs)
    • Je l'utilise dans un des xml en version code
    • J'ai aussi importé les ressources du GridLayout dans le dossier res, comme demandé dans leur documentation
    • Mais quand je passe le xml du layout en mode graphique, il me dit que la classe n'a pas pu être chargée (photo ci-dessous).


    Nom : eclipse_android_lib_v7_error.png
Affichages : 371
Taille : 131,0 Ko

    Voici la stacktrace de l'erreur Eclipse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    java.lang.NoClassDefFoundError: android/support/v7/gridlayout/R$dimen
    	at android.support.v7.widget.GridLayout.<init>(GridLayout.java:270)
    	at android.support.v7.widget.GridLayout.<init>(GridLayout.java:289)
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    	at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
    	at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.instantiateClass(ProjectCallback.java:437)
    	at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.loadView(ProjectCallback.java:189)
    	at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:207)
    	at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:135)
    	at android.view.LayoutInflater.inflate(LayoutInflater.java:469)
    	at android.view.LayoutInflater.inflate(LayoutInflater.java:373)
    	at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:399)
    	at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:336)
    	at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:332)
    	at com.android.ide.eclipse.adt.internal.editors.layout.gle2.RenderService.createRenderSession(RenderService.java:504)
    	at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.renderWithBridge(GraphicalEditorPart.java:1584)
    	at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.recomputeLayout(GraphicalEditorPart.java:1309)
    	at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart$ReloadListener.reloadLayoutSwt(GraphicalEditorPart.java:1817)
    	at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart$ReloadListener.access$0(GraphicalEditorPart.java:1755)
    	at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart$ReloadListener$1.run(GraphicalEditorPart.java:1749)
    	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
    	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
    	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3717)
    	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3366)
    	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1113)
    	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:997)
    	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:140)
    	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:611)
    	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:567)
    	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
    	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
    	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:354)
    	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:483)
    	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
    	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
    	at org.eclipse.equinox.launcher.Main.run(Main.java:1450)
    	at org.eclipse.equinox.launcher.Main.main(Main.java:1426)
    Et voici l'écran du package explorer :

    Nom : android_eclipse_err_pkg_exp.png
Affichages : 301
Taille : 104,9 Ko

    Et l'activité qui y fait référence (volontairement non aboutie, car faisant face à l'erreur) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <android.support.v7.widget.GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:grid="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="${packageName}.${activityClass}" />

    Merci d'avance pour toute aide (ou demande de renseignement(s) complémentaire(s) sur l'erreur).

  6. #6
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 273
    Par défaut
    Citation Envoyé par tails Voir le message
    Justement, je rencontre un soucis avec la librairie de compatibilité version 7 pour les gridlayout (dont j'ai besoin pour réaliser le menu en question) :

    • Je l'ai importée dans le projet et ajoutée en tant que librairie privée Android (en la mettant dans le dossier libs)
    • Je l'utilise dans un des xml en version code
    • J'ai aussi importé les ressources du GridLayout dans le dossier res, comme demandé dans leur documentation
    • Mais quand je passe le xml du layout en mode graphique, il me dit que la classe n'a pas pu être chargée (photo ci-dessous).
    tu a donc bien suivi toutes les indications de la documentation android sur l'ajouts de librairies ?

    Adding libraries with resources

    To add a Support Library with resources (such as v7 appcompat for action bar) to your application project:

    Using Eclipse

    Create a library project based on the support library code:

    Make sure you have downloaded the Android Support Library using the SDK Manager.
    Create a library project and ensure the required JAR files are included in the project's build path:
    Select File > Import.
    Select Existing Android Code Into Workspace and click Next.
    Browse to the SDK installation directory and then to the Support Library folder. For example, if you are adding the appcompat project, browse to <sdk>/extras/android/support/v7/appcompat/.
    Click Finish to import the project. For the v7 appcompat project, you should now see a new project titled android-support-v7-appcompat.
    In the new library project, expand the libs/ folder, right-click each .jar file and select Build Path > Add to Build Path. For example, when creating the the v7 appcompat project, add both the android-support-v4.jar and android-support-v7-appcompat.jar files to the build path.
    Right-click the library project folder and select Build Path > Configure Build Path.
    In the Order and Export tab, check the .jar files you just added to the build path, so they are available to projects that depend on this library project. For example, the appcompat project requires you to export both the android-support-v4.jar and android-support-v7-appcompat.jar files.
    Uncheck Android Dependencies.
    Click OK to complete the changes.
    You now have a library project for your selected Support Library that you can use with one or more application projects.

    Add the library to your application project:

    In the Project Explorer, right-click your project and select Properties.
    In the category panel on the left side of the dialog, select Android.
    In the Library pane, click the Add button.
    Select the library project and click OK. For example, the appcompat project should be listed as android-support-v7-appcompat.
    In the properties window, click OK.
    Note: If you are using the android-support-v7-mediarouter support library, you should note that it depends on the android-support-v7-appcompat library. In order for the v7 mediarouter library to compile, you must import both library projects into your development workspace. Then follow the procedure above to add the v7 appcompat project as a library to the v7 mediarouter library project.

    Citation Envoyé par tails Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <android.support.v7.widget.GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:grid="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="${packageName}.${activityClass}" />
    est ce que tu a bien compété le layout par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    </android.support.v7.widget.GridLayout>
    si tu a bien suivi tout ça et que ça ne marche toujours pas, alors essaye de faire " file/import/android/Existing Android Code Into WorkSpace " dans le champ "root directory" clique sur le bouton "browse..." et sélectionne le chemin " android-sdks/extras/android/support/v7/gridlayout " clique sur "OK", tu devrai ensuite avoir un projet dans le package explorer au nom de " android.support.v7.widget.GridLayout " ( qui est une librairie ), clique droit sur ton projet "Properties/android/(vers le bas)library/add/android.support.v7.widget.GridLayout", ok, puis normalement tu ne devrai plus avoir de problème

    dit moi si je n'ai pas été assez clair, je re-expliquerai, et dit moi si ton problème est résolu

    bonne chance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment réaliser ce menu?
    Par sybil dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/10/2007, 11h07
  2. Réponses: 6
    Dernier message: 02/10/2006, 22h40
  3. Réponses: 2
    Dernier message: 09/08/2006, 14h02
  4. [Conception] Comment créer des menu graphiques ?
    Par vinzzzz dans le forum Webdesign & Ergonomie
    Réponses: 1
    Dernier message: 21/04/2006, 19h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo