How to define dimens.xml for every different scree

2018-12-31 05:37发布

When supporting different screen sizes (densities) in Android often the focus is on creating different layouts for every possible screen. I.E.

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

I designed a layout for an xhdpi screen as a reference, and defined it's dimensions in dimens.xml. Now I want to give support it to every possible 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 sizes and add it to my project. Is this the right way to do it in my situation?

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

Thanks for your help. I need to support phones only (not tablets or other devices).

8条回答
浅入江南
2楼-- · 2018-12-31 06:33

Use Scalable DP

Although making a different layout for different screen sizes is theoretically a good idea, it can get very difficult to accommodate for all screen dimensions, and pixel densities. Having over 20+ different dimens.xml files as suggested in the above answers, is not easy to manage at all.

How To Use:

To use sdp:

  1. Include implementation 'com.intuit.sdp:sdp-android:1.0.5' in your build.gradle,
  2. Replace any dp value such as 50dp with a @dimen/50_sdp like so:

    <TextView
     android:layout_width="@dimen/_50sdp"
     android:layout_height="@dimen/_50sdp"
     android:text="Hello World!" />
    

How It Works:

sdp scales with the screen size because it is essentially a huge list of different dimens.xml for every possible dp value.

enter image description here

See It In Action:

Here it is on three devices with widely differing screen dimensions, and densities:

enter image description here

Note that the sdp size unit calculation includes some approximation due to some performance and usability constraints.

查看更多
怪性笑人.
3楼-- · 2018-12-31 06:33

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)
查看更多
登录 后发表回答