不同值文件夹的Android Dimens值计算

不同值文件夹的Android Dimens值计算,android,android-layout,Android,Android Layout,我正在为一些UI组件提供尺寸单位的值。我的UI需要所有设备在纵向模式下支持,所以我将我的尺寸单位文件放入16个文件夹中 首先,我在正常xhdpi值中插入了值(因为我有要测试的设备)。因此,现在我已经为values normal xhdpi文件夹构建了我的dimen文件。现在我正在通过再次检查普通hdpi屏幕的视觉效果,在values normal hdpi中进行输入。这确实是一项繁忙的任务我需要一些公式,以便我可以评估剩余文件夹的dimen值。 一些安卓标准规定,可绘制图像应符合以下比例: l

我正在为一些UI组件提供尺寸单位的值。我的UI需要所有设备在纵向模式下支持,所以我将我的尺寸单位文件放入16个文件夹中

首先,我在正常xhdpi值中插入了值(因为我有要测试的设备)。因此,现在我已经为values normal xhdpi文件夹构建了我的dimen文件。现在我正在通过再次检查普通hdpi屏幕的视觉效果,在values normal hdpi中进行输入。这确实是一项繁忙的任务我需要一些公式,以便我可以评估剩余文件夹的dimen值。

一些安卓标准规定,可绘制图像应符合以下比例:

ldpi=0.75

mdpi=1.0

hdpi=1.5

xhdpi=2

但这在这里不起作用,因为正常mdpi值的dimen值100 dp与正常hdpi值中的值150 dp产生的效果不同

正常xhdpi值的My dimens.xml

<resources>
    <!-- this is used in note -->
    <dimen name="text_size_h1">60sp</dimen>
    <dimen name="text_size_h2">50sp</dimen>
    <dimen name="text_size_h3">40sp</dimen>
    <dimen name="text_size_h4">30sp</dimen>
    <dimen name="text_size_h5">24sp</dimen>
    <dimen name="text_size_h6">20sp</dimen>

    <dimen name="text_size_h8">11sp</dimen>
    <dimen name="text_size_h10">10sp</dimen>
    <dimen name="text_size_h12">8sp</dimen>


    <dimen name="extra_mini">2dp</dimen>


    <dimen name="mini">4dp</dimen>
    <dimen name="x_mini">10dp</dimen>
    <dimen name="xx_mini">14dp</dimen>
    <dimen name="xxx_mini">20dp</dimen>

    <dimen name="mid">30dp</dimen>
    <dimen name="x_mid">40dp</dimen>
    <dimen name="xx_mid">50dp</dimen>
    <dimen name="xxx_mid">60dp</dimen>

    <dimen name="max">70dp</dimen>
    <dimen name="x_max">62dp</dimen>
    <dimen name="xx_max">90dp</dimen>
    <dimen name="xxx_max">100dp</dimen>

    <dimen name="supper">110dp</dimen>
    <dimen name="x_supper">120dp</dimen>
    <dimen name="xx_supper">130dp</dimen>
    <dimen name="xxx_supper">140dp</dimen>

    <dimen name="xxxxxx_supper">180dp</dimen>

    <dimen name="image_width">628dp</dimen>
    <dimen name="image_height">270dp</dimen>

</resources> 

60便士
50便士
40便士
30便士
24便士
20便士
11便士
10便士
8sp
2dp
4dp
10dp
14dp
20dp
30dp
40dp
50dp
60dp
70dp
62dp
90dp
100dp
110dp
120dp
130dp
140dp
180dp
628dp
270dp
“dp”是与密度无关的像素。100dp表示mdpi中的100px,hdpi中的150px,xhdpi中的200px,&c

这意味着,如果始终使用dp(这是一个好主意),则不需要为每个密度变量指定值,它们会自动转换为每个密度变量的像素值

密度无关像素(dp)

定义UI布局时应使用的虚拟像素单元,用于 以与密度无关的方式表示布局尺寸或位置。 与密度无关的像素相当于图像上的一个物理像素 160 dpi屏幕,这是系统假定的基线密度 对于“中等”密度屏幕。在运行时,系统是透明的 根据实际情况,根据需要处理dp装置的任何缩放 使用中屏幕的密度


当我给一个按钮100dp的宽度,那么它将不会给所有设备相同的效果。我们必须在不同的值文件夹中给出dimen值。一些设备是240dp,因此dp对160dp和240dp设备产生不同的影响。小心,看起来您混淆了dpi(即hdpi屏幕是240dpi)和dp?大小指定为100dp的按钮在每个设备中看起来应该“大致相同大小”,而不考虑其显示密度。等待,这意味着如果我使用dp指定所有值,那么我不需要为不同的设备进行调整。如果我以100dp的形式写东西,那么它将自动适用于所有设备,而不管hdpi/xhdpi/mdpi等。为什么我会有不同的值文件夹,比如values-sw800dp、values-sw800dp-xhpdi等等?一个values文件夹和一个dp dimen就足够了吗?@user2759617-swXXXdp用于为不同逻辑大小的屏幕(比如手机或平板电脑)使用不同的资源。此外,虽然dp适合视图大小,但位图和其他资源应具有不同密度的变体。您需要的只是
(即
值正常
)、
值大
,以及可能的
值大
值小
dp
中的尺寸会根据设备的像素密度自动转换,因此您所需要做的就是根据屏幕大小提供不同的尺寸来缩放UI元素(即较大屏幕的较大边距)。