Android
Écrans de support avec différentes résolutions, tailles
Recherche…
Remarques
Termes et concepts
Taille de l'écran
Taille physique réelle, mesurée en diagonale de l'écran. Pour plus de simplicité, Android regroupe toutes les tailles d'écran réelles en quatre tailles généralisées: petite, normale, grande et extra-large.
Densité de l'écran
La quantité de pixels dans une zone physique de l'écran; généralement appelé dpi (points par pouce). Par exemple, un écran à faible densité présente moins de pixels dans une zone physique donnée, comparé à un écran à densité "normale" ou "élevée". Pour plus de simplicité, Android regroupe toutes les densités d’écran réelles en six densités généralisées: faible, moyenne, élevée, très élevée, extra-haute et extra-extra-haute.
Orientation
L'orientation de l'écran du point de vue de l'utilisateur. Ceci est soit paysage ou portrait, ce qui signifie que le format de l'écran est soit large ou grand, respectivement. Sachez que non seulement les différents périphériques fonctionnent par défaut dans des orientations différentes, mais que l'orientation peut changer à l'exécution lorsque l'utilisateur fait pivoter le périphérique. Résolution Le nombre total de pixels physiques sur un écran. Lorsque vous ajoutez un support pour plusieurs écrans, les applications ne fonctionnent pas directement avec la résolution. les applications ne devraient concerner que la taille et la densité de l'écran, comme spécifié par les groupes de taille et de densité généralisés. Pixel indépendant de la densité (dp) Unité de pixels virtuelle que vous devez utiliser lors de la définition de la disposition de l'interface utilisateur, pour exprimer les dimensions ou la position de la disposition de manière indépendante de la densité. Le pixel indépendant de la densité est équivalent à un pixel physique sur un écran de 160 ppp, qui est la densité de base supposée par le système pour un écran de densité "moyenne". Lors de l'exécution, le système gère de manière transparente toute mise à l'échelle des unités dp, en fonction des besoins, en fonction de la densité réelle de l'écran utilisé. La conversion des unités dp en pixels est simple: px = dp * (dpi / 160). Par exemple, sur un écran de 240 ppp, 1 dp correspond à 1,5 pixel physique. Vous devez toujours utiliser les unités dp lors de la définition de l'interface utilisateur de votre application, afin de garantir un affichage correct de votre interface utilisateur sur des écrans présentant des densités différentes.
Unités
px
Pixels - correspond aux pixels réels à l'écran.
dans
Pouces - en fonction de la taille physique de l'écran. 1 pouce = 2,54 centimètres
mm
Millimètres - basé sur la taille physique de l'écran.
pt
Points - 1/72 de pouce basé sur la taille physique de l'écran.
dp ou tremper
Pixels indépendants de la densité - une unité abstraite basée sur la densité physique de l'écran. Ces unités sont relatives à un écran de 160 ppp, donc un pd est un pixel sur un écran de 160 ppp. Le rapport dp-pixel changera avec la densité de l'écran, mais pas nécessairement en proportion directe. Note: Le compilateur accepte à la fois "dip" et "dp", bien que "dp" soit plus compatible avec "sp".
sp
Pixels indépendants de l'échelle - c'est comme l'unité dp, mais elle est également adaptée à la taille de la police de l'utilisateur. Il est recommandé d'utiliser cet appareil pour spécifier les tailles de police afin qu'elles soient adaptées à la fois à la densité de l'écran et aux préférences de l'utilisateur. De comprendre l'indépendance de la densité dans Android:
Unité | La description | Unités par pouce physique | Densité Indépendante | Même taille physique sur chaque écran |
---|---|---|---|---|
px | Des pixels | Varie | Non | Non |
dans | Pouces | 1 | Oui | Oui |
mm | Millimètres | 25.4 | Oui | Oui |
pt | Points | 72 | Oui | Oui |
dp | Densité Indépendante Pixels | ~ 160 | Oui | Non |
sp | Échelle des pixels indépendants | ~ 160 | Oui | Non |
Les références:
Utiliser des qualificateurs de configuration
Android prend en charge plusieurs qualificateurs de configuration qui vous permettent de contrôler la manière dont le système sélectionne vos ressources alternatives en fonction des caractéristiques de l'écran de périphérique actuel. Un qualificatif de configuration est une chaîne que vous pouvez ajouter à un répertoire de ressources dans votre projet Android et spécifie la configuration pour laquelle les ressources internes sont conçues.
Pour utiliser un qualificatif de configuration:
- Créez un nouveau répertoire dans le répertoire res / de votre projet et nommez-le au format suivant:
<resources_name>-<qualifier>
.<resources_name>
nom_ressources<resources_name>
est le nom de ressource standard (tel que dessinable ou mise en page). -
<qualifier>
est un qualificatif de configuration, spécifiant la configuration d'écran pour laquelle ces ressources doivent être utilisées (telles que hdpi ou xlarge).
Par exemple, les répertoires de ressources d'application suivants proposent différents modèles de mise en page pour différentes tailles d'écran et différents tirables. Utilisez les mipmap/
dossiers pour les icônes du lanceur.
res/layout/my_layout.xml // layout for normal screen size ("default")
res/layout-large/my_layout.xml // layout for large screen size
res/layout-xlarge/my_layout.xml // layout for extra-large screen size
res/layout-xlarge-land/my_layout.xml // layout for extra-large in landscape orientation
res/drawable-mdpi/graphic.png // bitmap for medium-density
res/drawable-hdpi/graphic.png // bitmap for high-density
res/drawable-xhdpi/graphic.png // bitmap for extra-high-density
res/drawable-xxhdpi/graphic.png // bitmap for extra-extra-high-density
res/mipmap-mdpi/my_icon.png // launcher icon for medium-density
res/mipmap-hdpi/my_icon.png // launcher icon for high-density
res/mipmap-xhdpi/my_icon.png // launcher icon for extra-high-density
res/mipmap-xxhdpi/my_icon.png // launcher icon for extra-extra-high-density
res/mipmap-xxxhdpi/my_icon.png // launcher icon for extra-extra-extra-high-density
Conversion de dp et sp en pixels
Lorsque vous avez besoin de définir une valeur de pixel pour quelque chose comme Paint.setTextSize
mais que vous souhaitez tout de même la mettre à l'échelle en fonction du périphérique, vous pouvez convertir les valeurs dp et sp.
DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
float pixels = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 12f, metrics);
DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
float pixels = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 12f, metrics);
Vous pouvez également convertir une ressource de dimension en pixels si vous avez un contexte dans lequel charger la ressource.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="size_in_sp">12sp</dimen>
<dimen name="size_in_dp">12dp</dimen>
</resources>
// Get the exact dimension specified by the resource
float pixels = context.getResources().getDimension(R.dimen.size_in_sp);
float pixels = context.getResources().getDimension(R.dimen.size_in_dp);
// Get the dimension specified by the resource for use as a size.
// The value is rounded down to the nearest integer but is at least 1px.
int pixels = context.getResources().getDimensionPixelSize(R.dimen.size_in_sp);
int pixels = context.getResources().getDimensionPixelSize(R.dimen.size_in_dp);
// Get the dimension specified by the resource for use as an offset.
// The value is rounded down to the nearest integer and can be 0px.
int pixels = context.getResources().getDimensionPixelOffset(R.dimen.size_in_sp);
int pixels = context.getResources().getDimensionPixelOffset(R.dimen.size_in_dp);
Taille du texte et différentes tailles d'écran Android
Parfois, il vaut mieux n'avoir que trois options
style="@android:style/TextAppearance.Small"
style="@android:style/TextAppearance.Medium"
style="@android:style/TextAppearance.Large"
Utilisez petit et grand pour différencier de la taille de l'écran normal.
<TextView
android:id="@+id/TextViewTopBarTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@android:style/TextAppearance.Small"/>
Pour la normale, vous n'avez rien à spécifier.
<TextView
android:id="@+id/TextViewTopBarTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
Grâce à cela, vous pouvez éviter de tester et de spécifier des dimensions pour différentes tailles d'écran.