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 :

Adapter son application à n'importe quelle taille d'écran


Sujet :

Android

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Adapter son application à n'importe quelle taille d'écran
    Bonjour,

    Je suis novice dans la programmation android et développe actuellement une application qui devra être utilisable sur tablette et smartphone, quelque soit la taille de l'écran.

    J'ai pas mal cherché sur divers forum mais je ne comprend toujours pas grand chose au niveau des différentes possibilités offertes par Android au niveau de l'adaption vis à vis des différentes devices.

    Ce que j'ai compris :

    Mettre des images dans les dossier drawable-mdpi drawable-hdpi etc... en respectant les rapports donnés par android permet d'afficher, sur n'importe quelle taille d'écran, des images VISUELLEMENT de la même taille. (un bouton fera 4 cm sur une tablette en mdpi mais aussi 4 cm sur un smartphone en xhdpi) Exact ?

    Creer différents layout "à la main" en XML et les mettre dans les dossiers layout-large, layout-xlarge etc... nous permet de mettre en place différentes mises en page en fonction des devices (par exemple, deux scrolls côte à côte pour les tablettes et deux scrolls l'un en dessous de l'autre pour les smartphones ?). Exact ?

    Ce que je n'ai pas compris :

    Puisque la mise en place des layout à la main ne sert "qu'a" différencier la mise en page, aucune mise à l'echelle de la taille n'est faites ? Elle est, à la limite, faite lorsqu'il va chercher les images dans les drawable mais de maniére à avoir un rendu visuel identique partout ?

    Dans mon cas :

    J'ai tout codé à la main niveau interface graphique. Seul le relativeLayout principal est disponible dans mon layout en XML.
    J'ai les images disponibles dans tous les dossiers drawable avec les rapport respectés.
    J'ai fait une mise à l'echelle de chacun de mes élements graphique de la maniére suivante :

    tailleSurCetteDevice = tailleSurLaDeviceOptimisee * rapportEntreLesDeuxDevices * DensiteSurCetteDevice

    Sachant que la device optimisée correspond à une galaxytab2 qui est en mdpi et que le rendu graphique est juste parfait.

    Cette formule me permet de respecter les pourcentages du style "ce bouton fait 10% de la largeur de la galaxytab2 dans sur la device actuelle il faut qu'il fasse aussi 10% de la largeur sur la device actuelle"

    Le résultat est à peu prés cohérent mais il reste imprécis, mes marges ne sont pas mises à l'échelle, bref ce n'est pas satisfaisant dutout.

    Quel cheminement cohérent adpoter, en passant le moins possible par le xml ?

    Cordialement

  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
    J'avais fait un tutoriel sur les unités de mesure.... mais impossible de le retrouver dans la liste....
    http://nicroman.developpez.com/tutor...nites-mesures/

    En fait... une interface est "fluide" (s'adapte en largeur/hauteur en fonction de l'espace disponible).
    Mais pour éviter d'avoir une trop grande disparité entre des tablettes d'un coté, des téléphones de l'autre (et leurs différentes orientations), Android propose des "unités" qui font qu'une interface ressemble toujours à quelque chose de correct quelque soit le device.

    Ainsi, *TOUT* est mesuré en "dp".... grosso modo 160dp = 1 pouce ... ce n'est pas toujours vrai, mais c'est un bon ordre d'idée de la taille qu'aura l'interface à l'écran.

    Même les images ont une taille en "dp". Ainsi une image de 120x120 pixels dans la section "hdpi" aura une taille de 160(définition des dps)*120(pixels)/240(hdpi) = 80dp !
    La taille en pixels s'adaptera en fonction des résolutions, mais la taille de "dp" sera identique.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Du coup, d'aprés ce que tu me dis, c'est pour ca qu'avec mes images dans les différents dossiers drawable (avec l'échelle respectée), la taille observée à l'oeil sur la device est toujours la même ? et du coup c'est bien la taille en pixel qui c'est adaptée pour avoir toujours la même taille à l'écran.

    Mais comment faire pour qu'une image qui prend 1/4 de l'écran sur une galaxyTab2 en mdpi prenne aussi 1/4 de l'écran sur un smartphone en hdpi ou mdpi ?

  4. #4
    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
    Pour une image la réponse simple est: on ne peut pas... par définition une image de 240 pixels en hdpi fera 240 pixels sur un device hdpi. Hors, certains devices auront une taille d'écran de 960 pixels (l'image occupera alors 1/4) d'autre de 1080 pixels (l'image occupera alors un peu moins).
    Ou alors, il faut autoriser le redimensionnement de l'image, et donc, par définition, avoir un résultat pourri dans 80% des cas...

    Dans tous les cas on a deux choses:
    Une "View" (ImageView) dont la taille dépend du layout (layout_width, layout_height, etc...). Cette taille peut être fixée à 1/4 de l'écran sans problème (en passant par les "weight"), mais ce qui veut dire que sa taille (en pixels) va varier d'un device à un autre.
    Une image dans cette ImageView. Si la taille de la view (voir plus haut) est définie par le contenu, alors la taille de l'ImageView correspondra à celle de l'image. Si la taille de la view est prédéfinie par le layout, il est alors possible d'indiquer à l'ImageView comment l'image doit s'adapter à cette taille (et donc redimensionnée).

    P.S. les règles du forum proscrivent les demandes par MP. Merci de les respecter.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    D'accord merci, je pense avoir saisi l'idée.

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/01/2014, 10h19
  2. Réponses: 3
    Dernier message: 23/08/2013, 00h38
  3. visionner des photos en n'importe quelle taille
    Par sam01 dans le forum Débuter
    Réponses: 5
    Dernier message: 21/10/2010, 17h03
  4. Réponses: 3
    Dernier message: 20/08/2008, 13h16
  5. Réponses: 20
    Dernier message: 16/08/2006, 15h32

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