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).

93
demandé sur samis 2015-09-30 10:57:20

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

enter image description here

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.

210
répondu IntelliJ Amiya 2017-11-16 11:08:00

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 )

20
répondu koteswarao 2016-08-17 08:16:07

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)
6
répondu Piyush 2015-09-30 08:15:29

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);
    }
}
5
répondu Akeshwar Jha 2016-09-10 06:26:35

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.

3
répondu Anoop M 2017-04-21 07:50:44

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 :

  1. Inclure implementation 'com.intuit.sdp:sdp-android:1.0.5' dans votre build.gradle ,
  2. remplacer tout dp valeur telle que 50dp 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.

enter image description here

Voir Action:

ici, il est sur trois appareils avec des dimensions et des densités d'écran très différentes:

enter image description here

notez que le calcul de l'Unité de taille sdp inclut certains rapprochement en raison de certaines de performance et de convivialité contraintes.

3
répondu Advait S 2018-08-06 13:48:38

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. sample

comme c'est Android , je posterai un lien avec. sample1

sample2

~ il est préférable si vous enregistrez une copie du web. Pour les visualiser en mode hors connexion.

1
répondu RoCk 2016-10-06 08:26:57

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.

0
répondu Levon Petrosyan 2017-12-23 13:34:30