如何在Android中为每个不同的屏幕大小定义dimens.xml?

Android中经常支持不同的屏幕大小(密度)时,重点是为每个可能的屏幕创build不同的布局。 IE

  • LDPI
  • MDPI
  • 华电国际
  • xhdpi
  • xxhdpi
  • xxxhdpi

我devise了一个xhdpi屏幕的布局作为参考,并在dimens.xml中定义了它的尺寸 。 现在我想支持它到每一个可能的屏幕大小。 我怎样才能做到这一点?

据我所知,我可以使用这个工具来找出适合其他屏幕尺寸的dimens.xml ,并将其添加到我的项目。 这是在我的情况下正确的方式吗?

另一个问题, 我只需要创builddimens.xml以上屏幕尺寸? 如果是,那么w820dp是什么?

谢谢你的帮助。 我只需要支持手机 (不是平板电脑或其他设备)。

Solutions Collecting From Web of "如何在Android中为每个不同的屏幕大小定义dimens.xml?"

您必须为不同的屏幕创build不同的值文件夹 。 喜欢

 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 

在这里输入图像说明

欲了解更多信息,你可以访问这里

在android中不同的值文件夹

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

@humblerookie 编辑

您可以使用名为Dimenify的Android Studio插件,根据自定义比例因子为其他像素存储桶自动生成尺寸值。 它仍处于testing阶段,一定要通知您遇到的任何问题/build议给开发者。

我们希望在不同屏幕上看到所需视图大小的变化。

我们需要为不同的屏幕创build不同的值文件夹,并根据屏幕密度放置dimens.xml文件。

我已经采取了一个TextView,并观察改变时,我改变了不同的值文件夹中的dimens.xml。

请遵循这个过程

正常 – xhdpi \ dimens.xml

当我们改变正常的 – 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联系(4.7“,720 * 1280:xhdpi)

4.65“720p(720 * 1280:xhdpi)

4.7“WXGA(1280 * 720:Xhdpi)

Xlarge – xhdpi \ dimens.xml

当我们改变Xlarge – xhdpi \ dimens.xml时,下面的设备可以改变屏幕的大小

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

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

大 – xhdpi \ dimens.xml

当我们改变large – xhdpi \ dimens.xml时,下面的设备可以改变屏幕的大小

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

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

以下屏幕显示在“search通用电话和平板电脑”

大 – mdpi \ dimens.xml

以下设备可以在更改大型mdpi \ dimens.xml时更改屏幕的大小

5.1“WVGA(480 * 800:mdpi)

5.4“FWVGA(480 * 854:mdpi)

7.0“WSVGA(平板电脑)(1024 * 600:mdpi)

正常 – hdpi \ dimens.xml

当我们改变正常的 – hdpi \ dimens.xml时,下面的设备可以改变屏幕的大小

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

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

小 – ldpi \ dimens.xml

下面的设备可以在更改small – ldpi \ dimens.xml时更改屏幕的大小

2.7“QVGA滑块(240 * 320:ldpi)

2.7“QVGA(240 * 320:ldpi)

xlarge – mdpi \ dimens.xml

当我们改变xlarge – mdpi \ dimens.xml时,下面的设备可以改变屏幕的大小

10.1“WXGA(平板电脑)(1280 * 800:MDPI)

正常 – ldpi \ dimens.xml

当我们改变普通的ldpi \ dimens.xml时,下面的设备可以改变屏幕的大小

3.3“WQVGA(240 * 400:LDPI)

3.4“WQVGA(240 * 432:LDPI)

正常 – hdpi \ dimens.xml

当我们改变正常的 – hdpi \ dimens.xml时,下面的设备可以改变屏幕的大小

4.0“WVGA(480 * 800:hdpi)

3.7“WVGA(480 * 800:hdpi)

3.7“FWVGA滑块(480 * 854:hdpi)

正常 – mdpi \ dimens.xml

当我们改变normal – mdpi \ dimens.xml时,下面的设备可以改变屏幕的大小

3.2“HVGA滑条(ADP1)(320 * 480:MDPI)

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

您必须为不同的屏幕创build不同的values文件夹,并根据密度放置dimens.xml文件。

 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) 

我已经上传了一个简单的java程序,它将您的项目位置和所需的维度文件作为input。 基于此,它将在控制台中输出相应的尺寸文件。 这是它的链接:

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

以下是参考的完整代码:

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

如果你想查看更多:这是一个设备列表(平板电脑,手机,手表),包括watchchromebookwindowsmac 。 在这里你可以find密度,尺寸等。只要在这里,它是一个很好的资源,如果你也使用一个模拟器。

如果你点击一个特定的项目,它会在右侧显示更多细节。 样品

既然是Android ,我会发布相关的。 SAMPLE1

SAMPLE2

〜如果你保存一个networking的副本,这会更好。 要离线查看。

你可以把dimens.xml放进dimens.xml

1)

2) 值-hdpi

3) values-xhdpi

4) values-xxhdpi

并根据密度在相应文件夹内的dimens.xml提供不同的大小。

Android 3.2引入了一种新的屏幕尺寸方法,描述屏幕尺寸的数字都是以“dp”为单位的。大多数情况下,我们可以使用

最小宽度dp:可用于“dp”单位的应用程序布局的最小宽度; 这是显示器旋转中遇到的最小宽度dp。

创build一个右键单击res >>> new >>> Android资源目录

可用的限定符窗口移动最小的屏幕宽度 select限定符

屏幕宽度窗口中,只需编写从您开始的“dp”值,就可以让Android Studio使用该维度。

比改变到项目视图,右键单击您的新创build的资源目录

new >>> 值资源文件input一个新的文件名称dimens.xml ,你就完成了。