Blog coding and discussion of coding about JavaScript, PHP, CGI, general web building etc.

Saturday, October 8, 2016

How to define dimens.xml for every different screen size in android?

How to define dimens.xml for every different screen size in android?


When we talked about supporting different screen size in Android. Everyone is focusing on creating different layouts for every possible screens i.e.

  • ldpi
  • mdpi
  • hdpi
  • xhdpi
  • xxhdpi
  • xxxhdpi

What I did is design a layout as per xhdpi screen reference and define it's dimensions in dimens.xml. Now I want to give support it to every possible android screen size. How can I do that?

As far as I know, I can use this tool to figure out the proper dimens.xml for other screen size and add to my project. Is this the right way to do it in my situation?

Another question is Do I only need to create dimens.xml for above screen dimensions? If yes then what is w820dp ?

Thanks for your help. I only want to give support to phones not tablet and other devices.

Answer by Anoop M for How to define dimens.xml for every different screen size in android?


You can put dimens.xml in

1) values

2) values-small

3) values-normal

4) values-large

And give different sizes in dimens.xml within corresponding folders according to densities.

Answer by Piyush for How to define dimens.xml for every different screen size in android?


You have to create a different values folder for different screens and put dimens.xml file according to densities.

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)  

Answer by IntelliJ Amiya for How to define dimens.xml for every different screen size in android?


You have to create Different values folder for different screens . Like

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

For more information you may visit here

Different values folders in android

http://android-developers.blogspot.in/2011/07/new-tools-for-managing-screen-sizes.html

Answer by Akeshwar for How to define dimens.xml for every different screen size in android?


I've uploaded a simple java program which takes your project location and the dimension file you want as input. Based on that, it would output the corresponding dimension file in the console. Here's the link to it:

https://github.com/akeshwar/Dimens-for-different-screens-in-Android/blob/master/Main.java

Here's the full code for the reference:

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" 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);      }  }  

Answer by koteswarao for How to define dimens.xml for every different screen size in android?


we want to see the changes of required view size in different screens.

We need to create a different values folders for different screens and put dimens.xml file based on screen densities.

I have taken one TextView and observed the changes when i changed dimens.xml in different values folders.

Please follow the process

normal - xhdpi \ dimens.xml

The below devices can change the sizes of screens when we change the normal - xhdpi \ dimens.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

The below devices can change the sizes of screens when we change the Xlarge - xhdpi \ dimens.xml

nexus 9 ( 8.9", 2048 * 1556 : xhdpi)

nexus 10 (10.1", 2560 * 1600 : xhdpi)

large - xhdpi \ dimens.xml

The below devices can change the sizes of screens when we change the large - xhdpi \ dimens.xml

nexus 7 ( 7.0", 1200 * 1920: xhdpi)

nexus 7 (2012) (7.0", 800 * 1280 : tvdpi)

The below screens are visible in " Search Generic Phones and Tablets "

large - mdpi \ dimens.xml

The below devices can change the sizes of screens when we change the large - mdpi \ dimens.xml

5.1" WVGA ( 480 * 800 : mdpi )

5.4" FWVGA ( 480 * 854 : mdpi )

7.0" WSVGA (Tablet) ( 1024 * 600 : mdpi )

normal - hdpi \ dimens.xml

The below devices can change the sizes of screens when we change the normal - hdpi \ dimens.xml

nexus s ( 4.0", 480 * 800 : hdpi )

nexus one ( 3.7", 480 * 800: hdpi)

small - ldpi \ dimens.xml

The below devices can change the sizes of screens when we change the small - ldpi \ dimens.xml

2.7" QVGA Slider ( 240 * 320 : ldpi )

2.7" QVGA ( 240 * 320 : ldpi )

xlarge - mdpi \ dimens.xml

The below devices can change the sizes of screens when we change the xlarge - mdpi \ dimens.xml

10.1" WXGA ( tABLET) ( 1280 * 800 : MDPI )

normal - ldpi \ dimens.xml

The below devices can change the sizes of screens when we change the normal - ldpi \ dimens.xml

3.3" WQVGA ( 240 * 400 : LDPI )

3.4" WQVGA ( 240 * 432 : LDPI )

normal - hdpi \ dimens.xml

The below devices can change the sizes of screens when we change the normal - hdpi \ dimens.xml

4.0" WVGA ( 480 * 800 : hdpi )

3.7" WVGA ( 480 * 800 : hdpi )

3.7" FWVGA Slider ( 480 * 854 : hdpi )

normal - mdpi \ dimens.xml

The below devices can change the sizes of screens when we change the normal - mdpi \ dimens.xml

3.2" HVGA Slider ( ADP1 ) ( 320 * 480 : MDPI )

3.2" QVGA ( ADP2 ) ( 320 * 480 : MDPI )

Answer by RoCk for How to define dimens.xml for every different screen size in android?


In case you want to view more: Here's a link for a list of devices (tablet, mobile, watches), including watch,chromebook, windows and mac. Here you can find the density, dimensions, and etc. Just based it in here, it's a good resource if your using an emulator too.

If you click a specific item, it will show more details in the right side. sample

Since it's Android , I will post related to it. sample1

sample2

~ It's better if you save a copy of the web. To view it offline.


Fatal error: Call to a member function getElementsByTagName() on a non-object in D:\XAMPP INSTALLASTION\xampp\htdocs\endunpratama9i\www-stackoverflow-info-proses.php on line 72

0 comments:

Post a Comment

Popular Posts

Powered by Blogger.