web-dev-qa-db-fra.com

Comment fonctionne le dossier mdpi, hdpi, xhdpi?

Extrait de Android Lien vers le guide du développeur ci-dessus:

320dp: un écran de téléphone typique (240x320 ldpi, 320x480 mdpi, 480x800 hdpi, etc.).
480dp: une tablette tweener comme la Streak (480x800 mdpi).
600dp: une tablette de 7 ”(600x1024 mdpi).
720dp: une tablette de 10 ”(720x1280 mdpi, 800x1280 mdpi, etc.)

J'ai donc obtenu des graphiques (images) à une résolution de 320 pixels par pouce du concepteur dans ces dimensions uniquement

480 x 800 hdpi

720x1280 mdpi

800x1280 mdpi

Je ne sais pas quelle taille d'images doit être placée dans le dossier mdpi, le dossier hdpi et le dossier xhdpi. Je veux créer une application qui peut fonctionner sur la plupart des téléphones et tablettes Android Android?

28
Muhammad Irfan

Vous pouvez créer différents objets graphiques à utiliser à différentes densités de pixels. Android traite mdpi (160 pixels/pouce) comme densité de base. Donc pour les appareils mdpi, 1 dp = 1 pixel. À des densités plus élevées, il y a plus de pixels par pouce (240 pour hdpi, 320 pour xhdpi). Android tente de faire en sorte que les images graphiques occupent les mêmes dimensions physiques à l'écran, quelle que soit la densité de pixels de l'appareil. Par conséquent, si tout ce qu'il trouve est une ressource mdpi et que l'appareil est hdpi, il redimensionnera le graphique de 240/160 = 150% et doublera la taille du graphique pour xhdpi.

Si vous ne souhaitez pas cette mise à l'échelle automatique (qui peut rendre les graphiques médiocres), vous pouvez simplement fournir votre propre version des ressources graphiques pour une utilisation à des densités plus élevées. Ces graphiques doivent être de la même taille que Android mettrait à l'échelle une ressource mdpi.

Notez que les pixels/pouces qui ont été stockés dans le fichier image n'ont rien à voir avec cela. Tout dépend de l'endroit où vous placez les fichiers graphiques dans le répertoire des ressources de votre projet. Tous les graphiques placés dans res/drawable sont supposés être correctement dimensionnés pour les affichages mdpi, tout comme les graphiques placés dans res/drawable-mdpi. Fichiers image qu'il trouve dans res/drawable-hdpi sont supposés être correctement dimensionnés pour les écrans hdpi, etc. Lorsque votre programme s'exécute sur un périphérique particulier, Android recherchera d'abord un graphique qui correspond à la densité d'affichage de ce périphérique. S'il n'en trouve pas mais en trouve un pour une densité différente, il l'utilisera et mettra automatiquement à l'échelle l'image en fonction des règles ci-dessus.

36
Ted Hopp

Lorsque vous demandez une ressource pour laquelle vous fournissez des alternatives, Android sélectionne la ressource alternative à utiliser lors de l'exécution, en fonction de la configuration actuelle de l'appareil. Pour montrer comment Android sélectionne une ressource alternative, supposons que les répertoires à tirer suivants contiennent chacun des versions différentes des mêmes images:

drawable/
drawable-en/
drawable-fr-rCA/
drawable-en-port/
drawable-en-notouch-12key/
drawable-port-ldpi/
drawable-port-notouch-12key/

Et supposez que ce qui suit est la configuration de l'appareil:

Locale = en-GB 
Screen orientation = port 
Screen pixel density = hdpi 
Touchscreen type = notouch 
Primary text input method = 12key

En comparant la configuration de l'appareil aux ressources alternatives disponibles, Android sélectionne les drawables parmi drawable-en-port.

Le système arrive à sa décision pour quelles ressources utiliser avec la logique suivante:

enter image description here

Ref: Comment Android trouve la ressource la mieux adaptée

Autres références: indépendance de la densité , Fourniture de ressources alternatives et Meilleures pratiques

Et je dirai que vous devriez lire la page complèteSoutenir plusieurs écrans , je ne pense que rien ne sera une meilleure documentation que ça ...

10
Pankaj Kumar

Je suis confus avec toute la fragmentation de la taille de l'écran, mais les principes de base sont les suivants: 1. Vous devez créer divers dossiers sous des dispositions pour travailler avec vos images 2. Les images existeront dans les dossiers dessinables également sous divers dossiers. 3. Vous devriez avoir un dossier de base/mise en page et/dessinable pour accompagner les dossiers non spécifiques 4. Travaillez à partir de xhdpi puis réduisez les images!

Exemples de dossiers d'écran spécifiques:/layout-hdpi/layout-xhdpi/drawable-hdpi/drawable-xhdpi

D'après ce que je sais: 480 x 800 est hdpi (téléphones plus anciens, par exemple S2, HTC Desire, etc.) 720 x 1280 est xhdpi (nouveaux téléphones, par exemple S3, Galaxy Nexus, etc.)

Fondamentalement, selon le téléphone, Android récupérera les ressources du dossier nécessaire et s'il n'y en a pas, il récupérera du dossier principal '\ layout' ou '\ drawable'. Par exemple, l'application s'exécutant sur un Galaxy Nexus récupérera les ressources de '\ layout-xhdpi' si le dossier existe.

3
karlstackoverflow

oui, vous pouvez créer une application, mais il fallait créer des dossiers:/res/drawable,/res/drawable-mdpi,/res/drawable-hdpi et ajouter du contenu pour toutes les tailles d'écran

0
mbelsky