为了定义1080p和720p android TV的不同维度值,我需要决定应该使用哪个限定符。当我尝试使用像值-sw1080p,values-sw720p这样的东西时,它不起作用。 dimes.xml中的值不会影响任何事情。但是如果我使用像-sw540dp,-sw360dp这样的限定符,它就可以工作。我真的不明白为什么这样。任何的想法?感谢。
答案 0 :(得分:5)
首先,你是完全正确的。你可以使用
sw360dp/ : 720p screens
sw540dp/ : 1080p screens
sw720p/sw1080p
无法工作的原因是因为它们不作为限定符存在。
This is the official documentation。如您所知,如果要计算dp
文件夹,则需要考虑两个不同的单位:像素数(例如720)和像素密度(即每英寸点数单位) ,或多少像素适合一英寸)。
公式非常简单:
px = dp * (dpi / 160)
虽然在这种情况下我们有:
dp = px * 160 / dpi
当然,电视可以有不同的密度:这个表格会告诉你更多信息(来源:official documentation)。
我们假设我们的1080p显示屏具有超高密度(@ 320 dpi)。我们做数学
dp = 1080 * 160 / 320 = 540
因此我们获取适当的文件夹来放置您的资源。
编辑:在同一页面上,声明有一个特定的tvdpi
限定符可用于与电视相关的资源(213 dpi
左右)。
答案 1 :(得分:5)
Android TV可以考虑三种屏幕密度,以及三种相应的限定符。其中包括:
但根据https://developer.android.com/training/tv/start/layouts.html#density-resources:
您的电视布局应定位为1920 x 1080像素[标准1080p / HD]的屏幕尺寸,以及 然后允许Android系统将布局元素缩小到 如果需要,可以使用720p。
这意味着,如果您遵循此建议并始终设计为1080p规格,则可以使用-television
UI Mode Qualifier并完成此操作。
如果您需要为不同的电视尺寸提供不同的图像和布局,您可以使用上面的屏幕密度限定符。
电视的“标准”图片和布局可以存储在-xhdpi
文件夹中,因为xhdpi
是用于1080p电视的限定符。
如果(可选)4k电视需要高分辨率版本的图像,它们可以作为“2x”图像提供,并存储在drawable-xxxhdpi
文件夹中。同样,仅针对4k电视的尺寸/布局可放置在-xxxhdpi
。
(特别注意-tvdpi
限定符特定于720p,几乎肯定不是您想用来支持现代电视的。{/ p>
文档稀疏且略有矛盾,但我主要基于这些来源:
https://developer.android.com/guide/practices/screens_support.html https://stackoverflow.com/a/11581786/925478
答案 2 :(得分:0)
试试这个
first you need to decide two things:
1. your screen density (dpi)
2. your screen dimension (px)
then apply this to get size in dp:
dp = px / dpi
example for 1080px/2.0dpi
dp = 540
then folder name would be: values-sw540dp
where
sw(smallest width) = Math.min(width, height);
//so orientation doesn't matter