J'essaie de développer une application pour laquelle je souhaite prendre en charge plusieurs écrans. J'ai lu l'article Android sur les meilleures pratiques pour le support de plusieurs écrans. Selon l'article, nous devons suivre 3 choses importantes:Problèmes de mise en page liés à la prise en charge de plusieurs écrans
- Mention de la prise en charge de différentes tailles d'écran (grandes, moyennes et petites) et de toute densité dans AndroidManifest.xml.
- Placez les images de 3 dpi (120, 160, 240) dans 3 dossiers res/ldpi, res/mdpi et res/hdpi.
- Dans les dispositions, la dimension doit être mentionnée dans les unités "dip". Ensuite, Android prendra soin de la mise à l'échelle de son propre chef.
J'ai implémenté tous ces points dans mon projet. Les images sont récupérées correctement dans les dossiers appropriés. Mais les dispositions des contrôles ne sont pas les mêmes.
par exemple. J'ai couru l'application sur trois émulateurs
1. Résolution 240 * 320 dpi 120.
2. Résolution 240 * 320 dpi 160.
3. Résolution 240 * 320 dpi
240. (Tous les émulateurs ont même résolution mais densité différente.)
Le problème est que la position des commandes n'est pas la même sur les trois émulateurs. Selon ma compréhension si l'android: layout_marginLeft and android: layout_marginTop sont mentionnés dans "dip" alors ce problème ne devrait pas se produire. Lorsque la densité de l'émulateur augmente, les contrôles sont placés plus vers la droite.
Est-il absolument nécessaire que je fournisse des dispositions pour toutes les combinaisons de dimension et de densité d'écran même si la disposition est la même pour tous les dispositifs?
Est-ce que je manque un point important?
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView android:layout_width="fill_parent"
android:layout_height="fill_parent" android:src="@drawable/bgd" android:scaleType="fitXY">
</ImageView>
<ImageView android:id="@+id/wtButton"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:src="@drawable/button" android:layout_marginLeft="170dip"
android:layout_marginTop="9dip"></ImageView>
<ImageView android:id="@+id/htButton"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:src="@drawable/button2" android:layout_marginLeft="220dip"
android:layout_marginTop="90dip"></ImageView>
</RelativeLayout>
Images:
Pourriez-vous s'il vous plaît poster quelques captures d'écran d'exemple et votre mise en page XML. –
Silly pensée: Vous ne pensez pas qu'il est en réalité mise à l'échelle correctement et juste l'émulateur ne peut pas afficher plusieurs tailles de densité correctement? (ce qui aurait du sens, l'émulateur ne peut pas changer exactement les pixels sur votre écran physique, seulement l'échelle pour 'émuler' les différentes densités) – Dororo
Avait le même problème, aucune chance de trouver la réponse – Snake