2011-10-17 4 views
1

J'ai créé une mise en page avec la densité pré-basée (480x800). Je l'utilise depuis que j'ai commencé à apprendre Android (9 mois) et maintenant il était temps de tester mon application sur d'autres téléphones. Je l'ai testé sur trois téléphones avec une résolution de 480x800 et était bien, jusqu'à ce que je l'ai testé sur un avec 320x480 et 240x320. J'ai utilisé px-s comme largeur et hauteur, paddingTop etc. partout. J'ai vérifié l'application dans l'émulateur (créé différents avd-s pour différentes résolutions) et je ne peux pas voir toute la mise en page, car elle est plus grande que l'écran (en testant seulement en éclipse). Il a 4 images avec des paramètres de largeur et de hauteur "wrap_content". J'ai donc vérifié la documentation android. Je n'ai pas créé d'autres mises en page ou quoi que ce soit d'autre, mais j'ai remplacé les px-s par dp-s. C'est le meme. J'ai créé des boutons plus petits (voir ci-dessous) avec une résolution de 190x60px et les ai placés dans le dossier ldpi, mais il n'y a pas eu de gros progrès. Peut-être parce que les textures des textviews sont les mêmes et que les 2 textviews prennent 1/3 de la place de l'affichage dans le cas de la résolution 240x320 (alors que seulement 1/6 dans le cas du 480x800). (Donc, les textes semblent énormes dans la petite résolution par rapport à la grande résolution) S'il vous plaît dites-moi ce que je dois faire pour que la mise en page dans cette résolution 320x480 comme dans le 480x800.Indépendance de la densité Android

Taille de gradientbg: il s'agit d'un fichier .xml pour une forme, donc pas de taille physique. Taille des boutons (images): 380x150px hdpi (ou 190x60px dans le dossier LDPI)

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/gradientbg" 
    > 
    <TextView 
     android:id="@+id/TextView00" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="#E30000" 
     android:textColor="#FFFFFF" 
     android:gravity="center_horizontal|center_vertical" 
     android:textSize="26dp" 
     android:height="40dp" 
     android:textStyle="bold" 
     android:text="Main menu" 
    /> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="App" 
     android:textSize="30dp" 
     android:textStyle="bold" 
     android:paddingTop="20dp" 
     android:layout_gravity="center_horizontal" 
     android:textColor="#FFB300" 
    /> 
    <Button android:id="@+id/btn1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
      android:background="@drawable/mainbutton_1" 
     android:layout_gravity="center_horizontal" 
     android:layout_marginTop="20dip" 
    /> 
    <Button android:id="@+id/btn2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/mainbutton_2" 
     android:layout_gravity="center_horizontal" 
     android:paddingTop="5dp" 
    /> 
    <Button android:id="@+id/btn3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
       android:background="@drawable/mainbutton_3" 
     android:layout_gravity="center_horizontal" 
     android:paddingTop="5dp" 
    /> 
    <Button android:id="@+id/btn4" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
       android:background="@drawable/mainbutton_4" 
     android:layout_gravity="center_horizontal" 
     android:paddingTop="5dp" 
    /> 

</LinearLayout> 
+0

Créez différentes mises en page pour différentes tailles. Vous pouvez regarder cette question: http://stackoverflow.com/questions/5726764/android-layouts-for-multiple-screen-sizes –

+1

La densité des pixels et la taille de l'écran sont des choses complètement différentes. Si vous placez des ressources dans le dossier ldpi, elles ne seront pas nécessairement utilisées sur les petits écrans; pour cela, vous devrez les mettre dans le petit dossier. Consultez la rubrique [Prise en charge de plusieurs écrans] (http://developer.android.com/guide/practices/screens_support.html) pour plus d'informations. –

+0

Ok. Lequel est la meilleure pratique? Pour créer des boutons (images) dans différentes tailles ou est-ce suffisant (à droite) pour définir la largeur et la hauteur à une taille proportionnelle (par exemple 380dp pour hdpi, 190dp pour ldpi). Le dernier est plus facile et fonctionne, mais je suis curieux. – erdomester

Répondre

0

Lorsque vous définissez normalement mises en page dans les unités de dp, vous assurer que la mise en page reste le même sur les appareils dans le même seau de densité. Mais lorsque vous l'essayez sur une tablette (xlarge) ou sur un petit écran, il ne s'agira pas d'une mise à l'échelle correcte. Cet outil est fait pour que votre application fonctionne avec toute la gamme de périphériques (small/normal/large/xlarge). Il met à l'échelle vos fichiers xml de mise en page à partir de la densité de base pour laquelle vous étiez en train de concevoir.

http://onemanmobile.blogspot.com/2012/04/how-to-scale-your-android-layouts-to.html

Questions connexes