165

支持不同屏幕尺寸(密度)时安卓通常,重点是为每个可能的屏幕创建不同的布局。即。

  • 低密度聚乙烯
  • 多学科发展计划
  • 高密度聚乙烯
  • 超高分辨率
  • xxhdpi公司
  • xxxhdpi

我为超高分辨率屏幕作为参考,并将其定义为尺寸在里面尺寸.xml.现在我想为每一个可能的屏幕尺寸提供支持。我该怎么做?

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

另一个问题,我只需要创建尺寸.xml对于上述屏幕尺寸?如果是,那么是什么宽820dp?

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

  • 1
    是的,您必须创建不同的dimesn.xml尺寸不同分辨率的文件。
    – 皮尤什
    评论 2015年9月30日8:05
  • @皮尤什·古普塔,这将适用于所有上述尺寸的屏幕?但是什么是宽820dp它支持不同的android版本吗?另外,你能给我推荐一些基于dimens.xml支持不同屏幕的教程吗? 评论 2015年9月30日8:07
  • 它适用于平板电脑或其他产品。否则,正如我所说,您需要创建一个不同的值文件夹。
    – 皮尤什
    评论 2015年9月30日8:10

10个答案10

重置为默认值
317

你必须创造不同屏幕的不同值文件夹.喜欢

值-sw720dp 10.1英寸平板电脑1280x800 mdpivalues-sw600dp 7.0“平板电脑1024x600 mdpi值-sw480dp 5.4“480x854 mdpi值-sw480dp 5.1“480x800 mdpi值-xxxdpi 5.5“1080x1920 xxhdpi值-xxxhdpi 5.5“1440x2560-xxxhdpi值-xhdpi 4.7“1280x720 xhdpi值-xhdpi 4.65“720x1280 xhdpi值-hdpi 4.0“480x800 hdpi值-hdpi 3.7“480x854 hdpi值-mdpi 3.2“320x480-mdpi值-ldpi 3.4“240x432 ldpi值-ldpi 3.3“240x400 ldpi值-ldpi 2.7“240x320 ldpi

在此处输入图像描述

有关更多信息,请访问此处

android中的不同值文件夹

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

已编辑@谦逊的人

您可以使用名为尺寸根据自定义比例因子自动生成其他像素桶的维度值。它仍处于测试阶段,请务必将您遇到的任何问题/建议通知给开发人员。

11
  • 1
    应该有“values-sw480dp-hdpi”.xhdpi和xxhdpi等等吗?只有320dp在你的回答中有这样的内容。。请回复 评论 2016年7月20日16:47
  • 2
    @IntelliJAmiya:你应该提到Android<=3.2和>3.2之间的区别。
    – 尤尔根
    评论 2016年12月25日14:31
  • 5
    @IntelliJAmiya我创建了一个名为Dimenify的工作室插件。这样可以轻松创建其他桶的维度。你能添加一个相同的编辑,以便其他人可以使用吗?插件.jetbrains.com/androidstudio/plugin/9349-dimenify 评论 2017年1月13日7:30
  • 1
    @IntelliJAmiya肯定会有一些新版本不在这些文件夹中提供,并且/或者可能不适合某些文件夹。 评论 2017年6月27日9:31
  • 2
    如果我们只创建值sw320dp、值sw600dp。。。et cetera而不是values-sw320dp-xhdpi、values-sw320 dp-hdpi、values-Sw320 dp-mdpi?值末尾的后缀mdpi/hdpi/xhdpi-swXXXdp有那么重要吗?
    – 红色M
    评论 2018年7月19日16:09
58

使用可扩展DP

虽然为不同的屏幕尺寸制作不同的布局理论上是一个好主意,但它可能很难适应全部的屏幕尺寸和像素密度。有超过20种不同尺寸.xml上述答案中建议的文件根本不容易管理。

如何使用:

使用特别提款权:

  1. 包括实现“com.intuit.sdp:sdp-android:1.0.5”在您的建筑梯度,
  2. 替换任何dp(差分)值,例如50 dp用一个@尺寸/50_sdp如此:

    <文本视图android:layout_width=“@dimen/_50sdp”android:layout_height=“@dimen/_50sdp”android:text=“你好,世界!”/>

工作原理:

特别提款权根据屏幕大小进行缩放,因为它本质上是一个巨大的不同列表尺寸.xml尽一切可能dp(差分)值。

在此处输入图像描述

在行动中看到它:

在屏幕尺寸和密度相差很大的三种设备上:

在此处输入图像描述

请注意特别提款权由于性能和可用性限制,尺寸单位计算包括一些近似值。

8
  • 4
    非常感谢。这对我真的很有用。 评论 2019年3月5日16:11
  • @Advait您能告诉我三星Edge 7 5.5英寸手机2560x1440分辨率应使用哪个值文件夹吗? 评论 2019年4月9日5:54
  • @Adwait目前我使用的是值xxhdpi文件夹,但问题是,它对5、5.5和6个屏幕使用相同的文件夹,所以在5英寸屏幕和5.5上出现滚动。我不想那样。你能帮我一下吗? 评论 2019年4月9日6:04
  • @Advait S values-xxhdpi适用于5.5“1080x1920,同样适用于5.5”1440x2560,我想为5.5“1440x2560。 评论 2019年4月9日6:07
  • @确实是乌尔哈斯巴提尔!我遇到了类似的问题,不知道如何解决。你有没有找到解决类似英寸和不同像素分辨率的屏幕的方法? 评论 2020年1月29日14:09
28

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

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

我使用了一个TextView并观察了在中更改dimens.xml时的更改不同的值文件夹。

请遵循流程

正常-xhdpi\dimens.xml

当我们更改normal-xhdpi\dimens.xml时,以下设备可以更改屏幕的大小

连接5X(5.2英寸*1080*1920:420dpi)

连接6P(5.7英寸*1440*2560:560dpi)

连接6(6.0英寸*1440*2560:560dpi)

连接5(5.0“,10801920年:xxhdpi)

连接4(4.7英寸,768*1280:xhdpi)

银河系(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)

连接10(10.1英寸,2560*1600:xhdpi)

大-xhdpi\dimens.xml

当我们更改大-xhdpi\dimens.xml时,以下设备可以更改屏幕的大小

nexus 7(7.0英寸,1200*1920:xhdpi)

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

以下屏幕在“搜索通用电话和平板电脑”中可见

大-mdpi\dimens.xml

当我们更改large-mdpi\dimens.xml时,以下设备可以更改屏幕的大小

5.1英寸WVGA(480*800:mdpi)

5.4英寸FWVGA(480*854:mdpi)

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

正常-hdpi\dimens.xml

当我们更改normal-hdpi\dimens.xml时,以下设备可以更改屏幕的大小

nexus s(4.0英寸,480*800:hdpi)

连接一(3.7英寸,480*800:hdpi)

小-ldpi\dimens.xml

当我们更改小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(tABLED)(1280*800:MDPI)

正常-ldpi\dimens.xml

当我们更改normal-ldpi\dimens.xml时,以下设备可以更改屏幕的大小

3.3英寸WQVGA(240*400:LDPI)

3.4英寸WQVGA(240*432:LDPI)

正常-hdpi\dimens.xml

当我们更改normal-hdpi\dimens.xml时,以下设备可以更改屏幕的大小

4.0英寸WVGA(480*800:hdpi)

3.7英寸WVGA(480*800:hdpi)

3.7英寸FWVGA滑块(480*854:hdpi)

normal-mdpi\dimens.xml

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

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

3.2英寸QVGA(ADP2)(320*480:MDPI)

  • 所以根据你的说法,这些文件夹将被命名为值-正常-xhdpi? 评论 2016年12月18日15:06
  • 是的,我同意你的观点,我说的是“为不同的文本大小创建不同的值文件夹”,而不是向所有文件写入值。所以请阅读标题。谢谢。 评论 2016年12月19日6:42
  • 它不起作用stackoverflow.com/questions/67604335/…它总是从所有设备的同一文件夹中获取值
    – 用户924
    评论 2021年5月19日17:37
13

有很好的库可以处理所有的事情,并减少您的痛苦。要使用它,只需在渐变中添加两个依赖项:

实现“com.intuit.ssp:ssp-android:1.0.5”实现“com.intuit.sdp:sdp-android:1.0.5”

之后,使用尺寸这样地:

android:layout_marginTop=“@dimen/_80sdp”
8

你必须创建一个不同的不同屏幕的文件夹并放置尺寸.xml根据密度归档。

1) 值2) 值-hdpi(320x480480x800)3) 值-大hdpi(600x1024)4) 值-xlarge(720x1280、768x1280和800x1280,Nexus7和Nexus10)5) values-sw480dp(5.1’WVGA屏幕)6) 值xhdpi(Nexus4、Galaxy Nexus)
6
  • 我在哪里可以得到屏幕大小之间的定量?正如我在工具中看到的,他们定义了低密度聚乙烯,中密度聚乙烯方式 评论 2015年9月30日8:21
  • 这取决于您的值文件夹,该文件夹最多可以从中检索值。
    – 皮尤什
    评论 2015年9月30日8:22
  • 我需要提一下吗值-xxhdpi为了Nexus 6? 评论 2015年9月30日14:58
  • 320x480像素是典型的多学科发展计划所以,要么放进去或在中值-mdpi 评论 2015年10月1日6:48
  • 横向模式如何? 评论 2017年11月21日2:35
8

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

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

以下是供参考的完整代码:

公共类Main{/***你可以在这里改变你的因素。当前因素与官方文件一致。*/专用静态最终双LDPI_FACTOR=0.375;专用静态最终双MDPI_FACTOR=0.5;专用静态最终双HDPI_FACTOR=0.75;专用静态最终双XHDPI_FACTOR=1.0;专用静态最终双XXHDPI_FACTOR=1.5;专用静态最终双精度XXXHDPI_FACTOR=2.0;私人静态双重因素;公共静态void main(String[]args)引发IOException{扫描仪输入=新扫描仪(System.in);System.out.println(“输入项目/模块的位置”);字符串projectPath=in.nextLine();System.out.println(“您想要以下哪一个维度文件?\n1。ldpi\n2。mdpi\n3。hdpi\n4。xhdpi\n5。xxhdpi\n6。xxxhdpi”);int dimenType=in.nextInt();开关(dimenType){情况1:系数=LDPI_factor;断裂;情况2:因子=MDPI_factor;断裂;情况3:因子=HDPI_factor;断裂;情况4:系数=XHDPI_factor;断裂;情况5:因子=XXHDPI_factor;断裂;情况6:系数=XXXHDPI_factor;断裂;违约:系数=1.0;}//full path=“/home/akeshwar/android-sat-bothIncluded-notintegrated/code/tpr-5-5-9/princetonReview/src/main/res/values/dimens.xml”//项目或模块的位置=“/home/akeshwar/android sat bothIncluded notintegrated/code/tpr5-5-9/pringtonReview/”/***如果文件存在某些I/O异常,您可以在此处直接复制文件的完整路径:*/字符串fullPath=projectPath+“/src/main/res/values/dimens.xml”;FileInputStream fstream=新文件输入流(完整路径);BufferedReader br=新的BufferedReader(新的InputStreamReader(fstream));字符串strLine;while((strLine=br.readLine())!=空){modifyLine(strLine);}br.关闭();}private static void modifyLine(字符串行){/***好吧,这就是我检测这条线是否有维数的方法。*/if(第行包含(“p</”)){int endIndex=line.indexOf(“p</”);//因为indexOf返回发生字符串的第一个实例。并且,实际维度将位于屏幕中第一个“>”之后int begIndex=line.indexOf(“>”);字符串前缀=line.substring(0,begIndex+1);字符串根=line.substring(begIndex+1,endIndex-1);字符串后缀=line.substring(endIndex-1,line.length());/***现在,我们有了根。我们可以用它来创建不同的维度。根就是维度编号。*/double dimens=double.parseDouble(根);dimens=dimens*因子*1000;dimens=(double)((int)dimens);dimens=dimens/1000;根=维度+“”;System.out.println(前缀+“”+根+“”+后缀);}System.out.println(行);}}
0
6

你可以把尺寸.xml在里面

1)

2)值-hdpi

3)值-xhdpi

4)值-xxhdpi

并提供不同尺寸尺寸.xml根据密度在相应的文件夹中。

2
2

在代码中获得更大灵活性的基本原则是封装变化/更改的内容(或极有可能更改的内容)。

如果您的箱子尺寸发生变化。因此,首先要将维度(您认为需要更改的维度)从XML代码或java/kotlin代码移动到文件值/dimens.XML

对于这个问题的背景。您可以通过密度限定符或小宽度限定符使用res文件夹。

values/dimens.xml值值-ldpi/dimens.xml值-hdpi/dimens.xmlvalues/dimens.xml值值-sw320dp/dimens.xml值-sw320dp/dimens.xml

这里需要注意的一点是,values/dimens.xml中的项将应用于小于指定的最低断点的屏幕。

values/dimens.xml//最小屏幕values-sw320dp/dimens.xml//320dp或更多,直到下一个断点文件夹values-sw360dp/dimens.xml/360dp或更多,直到下一个断点文件夹

需要注意的另一个重要点是,高像素密度设备可能具有小屏幕。因此,请确定您是要指定密度限定符还是屏幕宽度限定符。


为这方面的新手做进一步的简报。

您可以将限定符添加到不同的资源文件夹,例如值、可绘制和布局。

这些限定符可以表示语言(-en、-hi)、方向(-land、-port)或屏幕大小范围(-ldpi、-hdpi)。

命名约定具有限定符的层次结构,限定符只能按此顺序添加。

values-en-hdpi(不能是values-hdpi-en)values-en-land-hdpi(它不能是values-hdpi-en-land或任何其他顺序)布局-hdpi

订单记录在本页表2

一些限定符表示绝对值,而其他类似ldpi、hdpi的限定符表示断点。

1

如果你想看更多:这里有一个链接获取设备列表(平板电脑、手机、手表),包括,色度手册,窗户雨衣。在这里你可以找到密度、尺寸等。基于此,如果你也使用模拟器,这是一个很好的资源。

如果您单击特定项目,它将在右侧显示更多详细信息。样品

因为它是安卓,我会发布相关内容。样品1

样本2

~最好保存一份网络副本。脱机查看。

0
1

Android 3.2引入了一种新的屏幕大小方法,描述屏幕大小的数字都是以“dp”为单位的。通常我们可以使用

最小宽度dp:应用程序布局可用的最小宽度(以“dp”为单位);这是您在显示器的任何旋转中都会遇到的最小宽度dp。

要创建一个右键单击物件>>>新的>>>Android资源目录

发件人可用限定符车窗移动最小屏幕宽度所选限定符

屏幕宽度窗口只需从您希望Android Studio使用的dimens开始写“dp”值。

比更改为项目视图中,右键单击新创建的资源目录

新的>>>值资源文件输入新文件名尺寸.xml你就完了。

1
  • 感谢您解释如何实际创建这些文件夹。
    – 贝科
    评论 2020年3月15日10:17

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.