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

Android Discussion :

ToogleButton à 3 positions


Sujet :

Android

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 18
    Points : 6
    Points
    6
    Par défaut ToogleButton à 3 positions
    Bonsoir,
    j'ai un problème, j'ai besoin d'un genre de ToggleButton avec 3 positions au lieux de 2 (on / off) mais je me demande si c'est possible de faire ce genre de bouton.
    Qu'en pensez vous?

  2. #2
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    A ma connaissance il n'existe pas de boutons à 3 états dans Android...

    Il y a deux façons de le faire:
    Utiliser un "button" classique, et changer son drawable (background) si l'état est indéfini à la main, dans le code, pour chaque bouton.

    Ou alors la façon "hard":
    Créer de toute pièce un state "Undefined" (dans les attributes)
    Et une classe "ThreeStatesButton" qui surcharge onCreateStateSet (ou un truc du genre je me souviens plus) pour utiliser cet état (et probablement stocker un boolean "isUndefined")
    Par la suite, le selector du background du bouton pourra utiliser ce state pour choisir une autre image....
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Ah d'accord je vais réfléchir là dessus je pense que je peux y arriver. Seul hic c'est que je crois que les méthodes relatives aux boutons ne sont pas disponibles pour l'API 8 et mon appli doit absolument être compatble avec cet API.
    En fait c'est pour créer un bouton répétition (statu répétition off / répétition piste / répétition tout) dans un lecteur de musique, et ça n'a pas été invienté hier.
    j'ai cherché une autre solution et je suis sur qu'il y a moyen de le faire avec un algorithme "if / else if /else" mais il me manque une méthode en java qui permet de redéfinir le background d'un bouton (avec l'api 8)

  4. #4
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour

    Il existe des implementations pourAndroid pour avoir le même genre de bouton que sous ios (SegementedControl)

    voici un exemple:
    https://github.com/makeramen/android...tedradiobutton
    ou
    http://blog.bookworm.at/2010/10/segm...n-android.html

    Comme le dis nicroman tu peux te créer toi même ton bouton mais le mieux dans ce cas est de passer par la classe RadioButton qui sera plus facile à implémenter que la classe Button.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Ce n'est pas ce que j'avais en tête, en fait c'est comme un seul bouton qui a la base est noir par exemple, ensuite quand on appuie une fois il devient bleu, on rappuie sue ce même bouton il devient vert, et à la troisième fois il redevient noir, et ainsi de suite...

    merci quand même du bouton séquentiel, j'en aurai peut besoin plus tard.

  6. #6
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Ce n'est pas ce que j'avais en tête, en fait c'est comme un seul bouton qui a la base est noir par exemple, ensuite quand on appuie une fois il devient bleu, on rappuie sue ce même bouton il devient vert, et à la troisième fois il redevient noir, et ainsi de suite...
    Dans ce cas par sur un bouton simple que tu personnalises.

    Avec une variable à trois états , et tu dessines la bonne image à chaque click sur le bouton en incrémentant ta variable.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    C'est ce que je me suis dit sauf que je ne sais comment comment créer la variable à trois états...

  8. #8
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Méthode sale (pre Java6)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int variable;
    static public int VALUE_1=0;
    static public int VALUE_2=1;
    static public int VALUE_3=2;
    Méthode propre (Java6+)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    static public enum Value { VALUE_1, VALUE_2, VALUE_3 };
     
    Value  variable;
    pour passer de l'un à l'autre...
    méthode sale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    variable = (variable + 1) % 3;
    méthode propre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    static public enum Value { VALUE_1, VALUE_2, VALUE_3;
      public Value next() {
         Value[] all = values();
         return all[(ordinal()+1)%all.length];
      }
    };
     
    variable = variable.next();
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Merci cet algorithme est plus propre que celui auquel j'avais pensé (un banal if / esle if / else), donc maintenant il ne me manque plus qu'à trouver un moyen de définir un brackground pour le bouton, en java et compatible avec l'API Android 8

    En tous cas merci pour l'aide !

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Personne ne connait une méthode pour définir le background d'un bouton en java? et si possible utilisable avec l'API 8? Merci d'avance.

  11. #11
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Ah merci, j'avais pas bien cherché

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Méthode propre (Java6+)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    static public enum Value { VALUE_1, VALUE_2, VALUE_3 };
     
    Value  variable;
    pour passer de l'un à l'autre...

    méthode propre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    static public enum Value { VALUE_1, VALUE_2, VALUE_3;
      public Value next() {
         Value[] all = values();
         return all[(ordinal()+1)%all.length];
      }
    };
     
    variable = variable.next();
    Je n'arrive pas à utiliser ce code, et il y a des erreurs que je ne sais pas résoudre...

  14. #14
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Pourtant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    static public enum Value { 
        VALUE_1, 
        VALUE_2, 
        VALUE_3;
     
        public Value next() {
            Value[] all = values();
            return all[(ordinal()+1)%all.length];
        }
    }
    Compile sans problême... c'est quoi les erreurs ?
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Voici les erreurs :

    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
     
    static public enum Value { // ici Value a comme erreur "The member enum Value can only be defined inside a top-level class or interface"
        VALUE_1, 
        VALUE_2, 
        VALUE_3;
     
        public Value next() {
            Value[] all = values();
            return all[(ordinal()+1)%all.length];  //il faut créer une méthode original, je ne comprends pas tout...
        }
     
                          private int ordinal() {
    				// TODO Auto-generated method stub
    				return 0;
      }
    }

  16. #16
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Et vu que je ne connais pas ce code je me demande aussi où je définis les images en tant que background. Je me suis dit que c'était peut être les VALUES mais je n'ai pas le temps de chercher des heures parce que j'ai plein d'autres choses à coder...

    Et merci de l'aide apportée jusque là

  17. #17
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Pourtant le message d'erreur est clair:
    "The member enum Value can only be defined inside a top-level class or interface"

    Tu as du déclarer l'enum dans une fonction ou je ne sais quoi...


    Pour les images c'est dans drawable...
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  18. #18
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Non, hors mis le code cité je n'ai rien tapé en relation avec celui-ci. Et pour les images je demandais si je dois les déclarer de la manière "VALUE_1 = (R.drawable.bouton_1)" etc...?

    C'est bizarre mon idée est pourtant toute simple, il s'agit simplement d'un bouton permettant de choisir le mode de répétition d'une liste de lecture, ça ne devrai en théorie pas être compliqué non?

    [petite apartée]
    Dans le SDK révision 12 il y avait encore un sample d'application lecteur musique (je ne me rappelle plus le nom) très simple mais qui m'était utile, quand j'ai fait la mise à jour vers la révision 20 ce sample a disparu. Je l'ai recherché sur internet sans succès, j'ai aussi cherché un code source d'appli mais là non plus ce n'était pas concluant. Si vous pouvez m'aider je vous en remercie d'avance, sinon tant pis je me débrouillerai sans.

  19. #19
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Mais ca ne l'est pas (compliqué)... Je le fais tous les jours....
    Avec un code qui ressemble à celui que je t'ai donné pour les valeurs...

    Et dans le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int resId = (enum == VALUE_1) ? R.drawable.xxxxx :
                (enum == VALUE_2) ? R.drawable.yyyy :
                R.drawable.zzzz;
    button.setBackgroundResource(resId);
    Il semble que tu ai de menus problèmes avec Java, cela ne doit pas aider...
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  20. #20
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Ah merci ça va m'être utile. Et en effet j'ai appris le java depuis peu et du coup je ne le maîtrise pas encore, surtout pour Android...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Position du curseur
    Par gimlithedwarf dans le forum Composants VCL
    Réponses: 2
    Dernier message: 22/08/2002, 23h45
  2. [XSLT]position d'un element de valeur specifique
    Par squat dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 25/07/2002, 16h42
  3. Position du curseur dans Edit
    Par MrJéjé dans le forum C++Builder
    Réponses: 3
    Dernier message: 20/06/2002, 17h09
  4. Réponses: 2
    Dernier message: 17/05/2002, 20h37
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 20h07

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