Comment définir les dimensions.xml pour chaque taille d'écran sous android?
lors de la prise en charge de différentes tailles d'écran (densités) dans Android souvent, l'accent est mis sur la création de différentes mises en page pour chaque écran possible. I. E.
- ldpi
- mdpi
- hdpi
- xhdpi
- xxhdpi
- xxxhdpi
j'ai conçu une disposition pour un écran xhdpi comme une référence, et défini ses dimensions dans dimensions.xml . Maintenant je veux le soutenir à toutes les tailles d'écran possibles. Comment puis-je le faire?
autant que je sache, je peux utiliser cet" outil pour calculer les dimensions appropriées .xml pour d'autres tailles d'écran et l'ajouter à mon projet. Est-ce la bonne façon de le faire dans ma situation?
une autre question, est-ce que je dois seulement créer dimensions.xml pour les dimensions de l'écran ci-dessus? Si oui, qu'est-ce que w820dp
?
Merci pour votre aide. Je dois prendre en charge téléphones seulement (pas de tablettes ou d'autres appareils).
8 réponses
vous devez créer dossier des différentes valeurs pour différents écrans . Comme
values-sw720dp 10.1” tablet 1280x800 mdpi
values-sw600dp 7.0” tablet 1024x600 mdpi
values-sw480dp 5.4” 480x854 mdpi
values-sw480dp 5.1” 480x800 mdpi
values-xxhdpi 5.5" 1080x1920 xxhdpi
values-xxxhdpi 5.5" 1440x2560 xxxhdpi
values-xhdpi 4.7” 1280x720 xhdpi
values-xhdpi 4.65” 720x1280 xhdpi
values-hdpi 4.0” 480x800 hdpi
values-hdpi 3.7” 480x854 hdpi
values-mdpi 3.2” 320x480 mdpi
values-ldpi 3.4” 240x432 ldpi
values-ldpi 3.3” 240x400 ldpi
values-ldpi 2.7” 240x320 ldpi
pour plus d'information, vous pouvez visiter ici
dossiers de valeurs différentes dans android
http://android-developers.blogspot.in/2011/07/new-tools-for-managing-screen-sizes.html
édité par @humblerookie
vous pouvez utiliser le plugin Android Studio appelé Dimenify pour générer automatiquement des valeurs de dimension pour d'autres pixels en fonction de facteurs d'échelle personnalisés. Il est toujours en bêta, assurez-vous d'informer tout questions / suggestions vous venez à travers au développeur.
nous voulons voir les changements de la taille de vue requise dans différents écrans.
nous avons besoin de créer des dossiers de valeurs différentes pour différents écrans et mettre des dimensions.fichier xml basé sur les densités d'écran.
j'ai pris un TextView et observé les changements quand j'ai changé de dimens.xml dans différents dossiers de valeurs.
s'il vous Plaît suivre le processus
normal-xhdpi \ dimens.xml
Les appareils ci - dessous peuvent changer la taille des écrans lorsque nous changeons les dimensions normales-xhdpi\.xml
nexus 5X (5,2" * 1080 * 1920: 420dpi )
nexus 6P (5.7" * 1440 * 2560: 560dpi)
nexus 6 (6.0" * 1440 * 2560: 560dpi)
nexus 5 (5.0", 1080 1920 : xxhdpi)
nexus 4 (4.7", 768 * 1280 : xhdpi)
Galaxy nexus (4.7", 720 * 1280 : xhdpi)
4.65 " 720p (720 * 1280 : xhdpi )
4.7" WXGA (1280 * 720 : Xhdpi )
Xlarge-xhdpi \ dimens.xml
les appareils ci - dessous peuvent changer la taille des écrans lorsque nous changeons les dimensions xlarge-xhdpi.xml
nexus 9 (8.9", 2048 * 1556 : xhdpi)
nexus 10 (10.1", 2560 * 1600: xhdpi)
grand - xhdpi \ dimens.xml
les appareils ci - dessous peuvent changer la taille des écrans lorsque nous changeons les grand-XHDPI \ dimens.xml
nexus 7 (7.0", 1200 * 1920: xhdpi)
nexus 7 (2012) (7.0", 800 * 1280 : tvdpi)
les écrans ci-dessous sont visibles dans "Rechercher des téléphones génériques et tablettes "
grand - mdpi \ dimens.xml
les dispositifs ci-dessous peuvent changer les tailles de les écrans lorsque nous changeons le grand-mdpi \ dimens.xml
5.1 "WVGA (480 * 800: mdpi )
5.4" FWVGA (480 * 854: mdpi )
7.0" WSVGA (comprimé) (1024 * 600 : mdpi)
normal-hdpi \ dimens.xml
les appareils ci - dessous peuvent changer la taille des écrans lorsque nous changeons les dimensions normales-hdpi\.xml
nexus S (4.0", 480 * 800: hdpi )
nexus one (3.7", 480 * 800: hdpi)
petit - ldpi \ dimens.xml
les appareils ci - dessous peuvent changer la taille des écrans lorsque nous changeons les petits-ldpi \ dimens.xml
2.7 "QVGA Slider (240 * 320: ldpi )
2.7 "QVGA (240 * 320: ldpi )
xlarge-mdpi \ dimens.xml
les dispositifs ci-dessous peuvent changer la taille des écrans lorsque nous changeons le xlarge-mdpi \ dimens.xml
10.1" WXGA (comprimé) (1280 * 800 : MDPI)
normal-ldpi \ dimens.xml
les appareils ci - dessous peuvent changer la taille des écrans lorsque nous modifions les dimensions normales-ldpi\.xml
3.3 "WQVGA (240 * 400: LDPI )
3,4" WQVGA (240 * 432: LDPI )
normal-hdpi \ dimens.xml
les dispositifs ci-dessous peut changer la taille des écrans quand on change les dimensions normales - hdpi\.xml
4.0" WVGA (480 * 800 : hdpi )
3.7 "WVGA (480 * 800 : hdpi )
3.7 "FWVGA Slider (480 * 854: hdpi )
normal-mdpi \ dimens.xml
les appareils ci - dessous peuvent changer la taille des écrans lorsque nous changeons les dimensions normales-mdpi\.xml
3.2 " HVGA Slider ( ADP1 ) (320 * 480: MDPI )
3.2 "QVGA (ADP2) (320 * 480: MDPI )
vous devez créer un dossier différent values
pour différents écrans et mettre dimens.xml
fichier selon les densités.
1) values
2) values-hdpi (320x480 ,480x800)
3) values-large-hdpi (600x1024)
4) values-xlarge (720x1280 ,768x1280 ,800x1280 ,Nexus7 ,Nexus10)
5) values-sw480dp (5.1' WVGA screen)
6) values-xhdpi (Nexus4 , Galaxy Nexus)
j'ai téléchargé un programme java simple qui prend l'emplacement de votre projet et le fichier de dimension que vous voulez comme entrée. Basé sur cela, il produirait le fichier de dimension correspondant dans la console. Voici le lien:
https://github.com/akeshwar/Dimens-for-different-screens-in-Android/blob/master/Main.java
voici le code complet de la référence:
public class Main {
/**
* You can change your factors here. The current factors are in accordance with the official documentation.
*/
private static final double LDPI_FACTOR = 0.375;
private static final double MDPI_FACTOR = 0.5;
private static final double HDPI_FACTOR = 0.75;
private static final double XHDPI_FACTOR = 1.0;
private static final double XXHDPI_FACTOR = 1.5;
private static final double XXXHDPI_FACTOR = 2.0;
private static double factor;
public static void main(String[] args) throws IOException {
Scanner in = new Scanner(System.in);
System.out.println("Enter the location of the project/module");
String projectPath = in.nextLine();
System.out.println("Which of the following dimension file do you want?\n1. ldpi \n2. mdpi \n3. hdpi \n4. xhdpi \n5. xxhdpi \n6. xxxhdpi");
int dimenType = in.nextInt();
switch (dimenType) {
case 1: factor = LDPI_FACTOR;
break;
case 2: factor = MDPI_FACTOR;
break;
case 3: factor = HDPI_FACTOR;
break;
case 4: factor = XHDPI_FACTOR;
break;
case 5: factor = XXHDPI_FACTOR;
break;
case 6: factor = XXXHDPI_FACTOR;
break;
default:
factor = 1.0;
}
//full path = "/home/akeshwar/android-sat-bothIncluded-notintegrated/code/tpr-5-5-9/princetonReview/src/main/res/values/dimens.xml"
//location of the project or module = "/home/akeshwar/android-sat-bothIncluded-notintegrated/code/tpr-5-5-9/princetonReview/"
/**
* In case there is some I/O exception with the file, you can directly copy-paste the full path to the file here:
*/
String fullPath = projectPath + "/src/main/res/values/dimens.xml";
FileInputStream fstream = new FileInputStream(fullPath);
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String strLine;
while ((strLine = br.readLine()) != null) {
modifyLine(strLine);
}
br.close();
}
private static void modifyLine(String line) {
/**
* Well, this is how I'm detecting if the line has some dimension value or not.
*/
if(line.contains("p</")) {
int endIndex = line.indexOf("p</");
//since indexOf returns the first instance of the occurring string. And, the actual dimension would follow after the first ">" in the screen
int begIndex = line.indexOf(">");
String prefix = line.substring(0, begIndex+1);
String root = line.substring(begIndex+1, endIndex-1);
String suffix = line.substring(endIndex-1,line.length());
/**
* Now, we have the root. We can use it to create different dimensions. Root is simply the dimension number.
*/
double dimens = Double.parseDouble(root);
dimens = dimens*factor*1000;
dimens = (double)((int)dimens);
dimens = dimens/1000;
root = dimens + "";
System.out.println(prefix + " " + root + " " + suffix );
}
System.out.println(line);
}
}
vous pouvez mettre dimens.xml
dans
1) valeurs
"2) valeurs-hdpi
3) valeurs-xhdpi
4) valeurs-xxhdpi
et donner différentes tailles dans dimens.xml
à l'intérieur des dossiers correspondants selon les densités.
Utiliser Évolutive DP
bien que faire une mise en page différente pour différentes tailles d'écran soit théoriquement une bonne idée, il peut être très difficile de s'adapter pour toutes les" dimensions d'écran 1519180920", et les densités de pixels. Avoir plus de 20 + différents fichiers dimens.xml
comme suggéré dans les réponses ci-dessus, n'est pas facile à gérer du tout.
Comment Utiliser:
pour utiliser sdp
:
- Inclure
implementation 'com.intuit.sdp:sdp-android:1.0.5'
dans votrebuild.gradle
, -
remplacer tout
dp
valeur telle que50dp
par un@dimen/50_sdp
comme suit:<TextView android:layout_width="@dimen/_50sdp" android:layout_height="@dimen/_50sdp" android:text="Hello World!" />
Comment Cela Fonctionne:
sdp
balance avec la taille de l'écran car il s'agit essentiellement d'une liste énorme de différents dimens.xml
pour chaque valeur dp
possible.
Voir Action:
ici, il est sur trois appareils avec des dimensions et des densités d'écran très différentes:
notez que le calcul de l'Unité de taille sdp
inclut certains rapprochement en raison de certaines de performance et de convivialité contraintes.
dans le cas où vous voulez voir plus: voici un lien pour une liste d'appareils (tablette, mobile, montres), y compris watch
, chromebook
, windows
et mac
. Vous trouverez ici la densité, les dimensions, etc. Seulement ici, c'est une bonne ressource si vous utilisez un émulateur trop.
Si vous cliquez sur un élément spécifique, il montrera plus de détails dans le côté droit.
comme c'est Android
, je posterai un lien avec.
~ il est préférable si vous enregistrez une copie du web. Pour les visualiser en mode hors connexion.
Android 3.2 introduit une nouvelle approche des tailles d'écran,les nombres décrivant la taille de l'écran sont tous en unités "dp".La plupart du temps, nous pouvons utiliser
plus petite largeur dp: la plus petite largeur disponible pour l'application layout dans les unités" dp"; c'est la plus petite largeur dp que vous rencontrerez jamais dans n'importe quelle rotation de l'écran.
Pour créer un clic droit sur res >>> nouvelle >>> Android annuaire de ressources
de qualificatifs disponibles déplacement de la fenêtre largeur de L'écran la plus petite à qualificatifs choisis "151940920
dans largeur D'écran fenêtre il suffit d'écrire la valeur" dp " à partir de vous souhaitez que Android Studio à utiliser ces dimensions.
Que le changement de Projet , droit cliquez sur votre nouveau répertoire de ressources créé
nouvelle >>> Valeurs de fichier de ressources entrez un nouveau nom de fichier dimens.xml et vous êtes fait.