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 :

Gérer ses GUI pour les différents écrans [Débutant(e)]


Sujet :

Android

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 21
    Points : 17
    Points
    17
    Par défaut Gérer ses GUI pour les différents écrans
    Salutations à tous,

    Je suis actuellement débutant sur le développement Android.
    Comme tout débutant, je souhaite savoir créer une interface graphique digne de ce nom.

    L'idée de début est de faire une application disponible pour smartphone et tablette de toutes tailles.

    La technique d'utiliser un linearLayout n'est pas convainquante sans la possibilité de metre des pourcentages dans les tailles et positions.

    L'unique technique que j'ai cru être bonne jusque là était le relativeLayout.
    J'ai donc placé un élément au centre de ma page, et relié tout le reste à ce dernier, comme ça si l'écran est plus grand que prévu, il n'y a pas de soucis, le contenu reste visible, à taille fixe et centré.

    Bref, autant dire que ce n'est pas ce que j'attend d'une interface graphique !

    Je vous pose donc ma question, comment faire une interface graphique cohérente peut importe le format de l'écran ?
    Comment utiliser des pourcentages dans mes positions (position, taille, margin, padding) afin de rendre l'affichage identique en toute situation ?

    Faut il obligatoirement cibler une tranche de taille d'écran ?

    Je m'en remet à vous dans le but de m'aider dans ma quête de l'apprentissage du monde Java et Android !

    Bonne soirée à vous,
    Julien.

  2. #2
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Bonjour Julien,

    Le problème avec Android est que la taille des écrans n'est jamais la même. C'est pour cela qu'une application bien pensée utilise les RelativeLayout!
    Donc ta méthode est la mieux adaptée.
    Il est aussi possible d'utiliser les ScrollView!

    Maintenant, il existe un autre moyen qui est de créer une vue par taille d'écran. En effet, il est possible de connaitre la taille de l’écran:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Display ecran = getWindowManager ().getDefaultDisplay ();
    int hauteur = ecran.getHeight ();
    Du coup, il est assez simple de détecter un smartphone ou une tablette et appeler la vue correspondante!


    En espérant t'avoir aidé

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Merci David55 de ta réponse !

    Malheureusement je reste un peu dépourvu !

    Pourquoi ne pas avoir autorisé les pourcentages dans la programmation android ?
    C'est juste ... pas optimisé :/

    De la même façon, j'ai testé plusieurs éditeur de GUI en drag and drop, mais sans succès.

    Sur Eclipse (j'ai testé l'IDE de Motorola : Motodev, il intègre déjà tout ce qu'il faut) le déplacement d'un bloc à un endroit donné ne fonctionne pas toujours comme il faut, il se replace souvent automatiquement complètement à l'arrache, sans règle de position relative.

    En ce qui concerne le projet DroidDraw, il est vraiment mauvais ! Le simple fait de créer son interface, de générer le fichier XML puis de charger ce même fichier XML me donne une vue différente de celle de base.
    Une fois passé sur l'émulateur ou sur un Android device, j'ai encore un rendu différent !

    Auriez vous un bon IDE pour le développement Android ?

    J'utilise actuellement NetBean ( question d'habitude ) mais il ne gère pas de designer de GUI !

    Je vous remercie de vos réponses,
    Une bonne journée à vous,
    Julien.

  4. #4
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    L'IDE d'Eclipse est assez bien fait! Il suffit de comprendre comment il fonctionne est tout va tous seul!

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Même en ce qui concerne la création d'IDE de façon drag&drop ?


    Edit :

    Une autre question concernant les vues !

    Imaginons que j'ai une images en arrière plan, quelque chose qui prend toute la place dispo sur un terminal.

    Maintenant, j'aimerais rendre interactif certaine zone de cette image (un clique sur le nez du clown déclencherais un évènement, un clique sur sa chaussure également ... )

    Comment faire ça avec une image à taille variable (selon les écrans donc) ?

    Si mon image s'étire pour les besoins du terminal ( écran plus petit, ou plus grand ) les positions des zones cliquable doivent également changer, vous auriez une solution à ce problème ?

    Merci d'avance de vos réponses et du temps passé à m'aider !
    Bonne journée

  6. #6
    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
    Bonjour,

    Il me semble au contraire que l'approche d'android concernant les tailles est la bonne... Le pourcentage ne marche pas (il suffit de voir comme 90% des sites web sont "designés" pour une taille fixe pour le comprendre), en tout cas, ne marche pas forcément tout le temps...
    Le principe d'android est que quelque soit l'écran, le "rendu" (la taille de rendu) est similaire... Donc sur un écran xlarge / hdpi (tablet) ou un small / ldpi (téléphones d'il y a 4 ans) le texte doit être lisible, et "à peu pret" de la même taille, d'ou l'utilisation des "dp"...

    Le pourcentage existe (rares sont les layouts le nécessitant ceci-dit), sous android cela s'appelle "weight" / "weight-sum".

    En général, une UI commence par une relative-layout, permettant de placer les boutons / barres / menus autour de l'écran, puis un "contenu" prenant toute la place restante.. Ce contenu peut très bien etre scrollable si il manque de la place...

    Enfin pour finir dans le cas de l'image.... Tous les "programmeurs" d'arrière-plans dynamiques le font sans aucun soucis...
    La view contenant l'image recoit un "OnTouchListener" qui va recevoir les 'clicks'... Ceux-ci sont composés de X/Y en pixels.
    Avec le getWidth() / getHeight() de la view, on récupère un pourcentage pour savoir ou on a tapé dans l'image (comme si c'était une texture mip-mappée entre les hdpi/ldpi/...)
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Bonjour Nicroman,

    Merci de votre réponse !


    Citation Envoyé par nicroman Voir le message
    En général, une UI commence par une relative-layout, permettant de placer les boutons / barres / menus autour de l'écran, puis un "contenu" prenant toute la place restante.. Ce contenu peut très bien etre scrollable si il manque de la place...
    Votre méthodologie pour la structure d'une vue est précieuse, c'est justement le point d'accroche qu'il me manquait au niveau de l'apprentissage.

    Merci également pour les informations concernant la méthode pour une image interactive.

    Je pense que le sujet répond à mes questions, je n'ai plus qu'à mettre en pratique l'ensemble des conseils de ce post, je reviendrais si jamais j'ai un problème concernant les vues, mais je crois que tout est compris !

    En vous souhaitant une bonne journée,
    Encore merci,
    Julien.

    Ps: Je passe le sujet en résolu

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 20/04/2010, 14h34
  2. sql pour les différents sgbd
    Par rec82 dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/11/2008, 15h03
  3. Réponses: 1
    Dernier message: 18/03/2006, 18h12

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