我正在创建不同的值文件夹以支持不同的屏幕尺寸。以下是文件夹:
values-sw320dp-hdpi
values-sw320dp-xhdpi
values-sw320dp-xxhdpi
values-sw420dpi
values-sw560dpi
values-sw480dp-hdpi
values-sw480dp-xhdpi
values-sw480dp-xxhdpi
values-sw600dp
values-sw720dp
在Android Studio提供的设备列表中, 1080x1920 420dpi 。它应该从 values-sw420dp 访问维度值。但是它从访问sw320dp-xxhdpi 。 1080x1920 420dpi **中的布局与** 1080x1920 xxhdpi 略有不同。任何人都可以向我解释为什么它不能从它自己的文件夹访问?或者你可以向我解释创建一个布局的正确方法,以便它支持不同密度的不同屏幕尺寸吗?我已经提到了不同的网站。他们很混乱..请帮帮我!!
答案 0 :(得分:2)
我正在创建不同的值文件夹以支持不同的屏幕尺寸。
首先,在-xhdpi
和drawable
以外的资源类型上使用密度限定符(例如mipmap
)是一种严重的代码味道。几乎可以肯定的是,你不会得到你期望的结果。
其次,没有-sw420dpi
或-sw560dpi
限定符。您可以-sw420dp
或-sw560dp
表示您希望将这些资源用于这些屏幕尺寸阈值。但是,由于您在values-sw320dp-hdpi
等目录上的密度限定符,因此永远不会使用此类目录。
在Android Studio提供的设备列表中,有1080x1920 420dpi。它应该从值-sw420dp访问维度值
不,它不应该。
该屏幕的最小宽度为1080px。 1080px,420dpi,为411dp(1080 * 160/420)。 411< 420.因此,-sw420dp
的任何内容都不符合资格。
但它是从sw320dp-xxhdpi访问的。
部分原因是因为411低于420。
部分原因是因为你在这里使用密度限定符,这会使很多正常的"资源选择规则。
1080x1920 420dpi **中的布局与** 1080x1920 xxhdpi略有不同。
你的问题没有布局,所以没有人可以对此发表评论。
有人可以向我解释为什么它不能从自己的文件夹中访问吗?
没有"它自己的文件夹"。
或者您能否向我解释一下创建布局的正确方法,以便它支持不同密度的不同屏幕尺寸?
根据屏幕尺寸和(可能)方向使用layout
资源(例如res/layout-sw420dp/
)
使用dimen
中衡量的sp
资源(用于调整文本或文本占主导地位的内容)或dp
(其他所有内容)在这些布局资源中测量(例如, <dimen name="margin">16dp</dimen>
)
对drawable
和mipmap
资源(例如res/drawable-hdpi/
)使用密度限定符和可能大小限定符
通常,这就足够了。
我提到了不同的网站。他们很混乱
也许考虑读一本书。