我应该使用哪个资源限定符来支持 1080p、720p android 电视? - Android
Which resource qualifier should I use to support 1080p, 720p android TV? - Android
为了为 1080p 和 720p android 电视定义不同的尺寸值,我需要决定应该使用哪个限定符。当我尝试使用类似 values-sw1080p、values-sw720p 的东西时,它不起作用。 dimes.xml 中的值不会产生任何影响。但如果我使用像 -sw540dp、-sw360dp 这样的限定符,它就会起作用。我真的不明白为什么会这样。任何想法?谢谢
首先,你基本上是正确的。您可以使用
sw360dp/ : 720p screens
sw540dp/ : 1080p screens
sw720p/sw1080p
不起作用的原因是它们不作为限定符存在。
This is the official documentation 关于使用不同的屏幕尺寸。如您所见,如果要计算 dp
文件夹,需要考虑两种不同的单位:像素数(例如 720)和像素密度(即 dot-per-inch 单位, 或者一英寸有多少像素)。
公式很简单:
px = dp * (dpi / 160)
而在这种情况下我们有:
dp = px * 160 / dpi
当然,电视可以有不同的密度:这个 table 告诉你更多关于它的信息(来源:official documentation)。
假设我们有一个超高密度 (@320 dpi) 的 1080p 显示器。我们算一下
dp = 1080 * 160 / 320 = 540
所以我们得到合适的文件夹来放置您的资源。
EDIT:在同一页上,声明有一个特定的 tvdpi
限定符可用于 TV-related 资源(大约213 dpi
).
Android 电视可以考虑三种屏幕密度,以及三个相应的限定符。其中包括:
- tvdpi - (213dpi) - 适用于 720p 电视;
- xhdpi - (320dpi) - 适用于 1080p (HD) 电视;
- xxxhdpi - (640dpi) - 适用于 4k(超高清)电视。
但是根据https://developer.android.com/training/tv/start/layouts.html#density-resources:
Your TV layout should target a screen size of 1920 x 1080 pixels [standard 1080p/HD], and
then allow the Android system to downscale your layout elements to
720p if necessary.
这意味着,如果您遵循此建议并始终按照 1080p 规格进行设计,则可以使用 -television
UI Mode Qualifier 并完成它。
不过,如果您需要为不同的电视尺寸提供不同的图像和布局,您可以使用上面的屏幕密度限定符。
电视的“标准”图像和布局可以存储在 -xhdpi
文件夹中,因为 xhdpi
是用于 1080p 电视的限定符。
如果 4k 电视需要(可选)高分辨率版本的图像,它们可以作为“2x”图像提供,并存储在 drawable-xxxhdpi
文件夹中。同样,可以将仅针对 4k 电视的 dimensions/layouts 放置在 -xxxhdpi
.
中
(请特别注意 -tvdpi
限定符特定于 720p,几乎可以肯定不是您想要用来支持现代电视的限定符。)
文档稀疏且略有矛盾,但我主要基于以下来源:
https://developer.android.com/guide/practices/screens_support.html
试试这个
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
为了为 1080p 和 720p android 电视定义不同的尺寸值,我需要决定应该使用哪个限定符。当我尝试使用类似 values-sw1080p、values-sw720p 的东西时,它不起作用。 dimes.xml 中的值不会产生任何影响。但如果我使用像 -sw540dp、-sw360dp 这样的限定符,它就会起作用。我真的不明白为什么会这样。任何想法?谢谢
首先,你基本上是正确的。您可以使用
sw360dp/ : 720p screens
sw540dp/ : 1080p screens
sw720p/sw1080p
不起作用的原因是它们不作为限定符存在。
This is the official documentation 关于使用不同的屏幕尺寸。如您所见,如果要计算 dp
文件夹,需要考虑两种不同的单位:像素数(例如 720)和像素密度(即 dot-per-inch 单位, 或者一英寸有多少像素)。
公式很简单:
px = dp * (dpi / 160)
而在这种情况下我们有:
dp = px * 160 / dpi
当然,电视可以有不同的密度:这个 table 告诉你更多关于它的信息(来源:official documentation)。
假设我们有一个超高密度 (@320 dpi) 的 1080p 显示器。我们算一下
dp = 1080 * 160 / 320 = 540
所以我们得到合适的文件夹来放置您的资源。
EDIT:在同一页上,声明有一个特定的 tvdpi
限定符可用于 TV-related 资源(大约213 dpi
).
Android 电视可以考虑三种屏幕密度,以及三个相应的限定符。其中包括:
- tvdpi - (213dpi) - 适用于 720p 电视;
- xhdpi - (320dpi) - 适用于 1080p (HD) 电视;
- xxxhdpi - (640dpi) - 适用于 4k(超高清)电视。
但是根据https://developer.android.com/training/tv/start/layouts.html#density-resources:
Your TV layout should target a screen size of 1920 x 1080 pixels [standard 1080p/HD], and then allow the Android system to downscale your layout elements to 720p if necessary.
这意味着,如果您遵循此建议并始终按照 1080p 规格进行设计,则可以使用 -television
UI Mode Qualifier 并完成它。
不过,如果您需要为不同的电视尺寸提供不同的图像和布局,您可以使用上面的屏幕密度限定符。
电视的“标准”图像和布局可以存储在 -xhdpi
文件夹中,因为 xhdpi
是用于 1080p 电视的限定符。
如果 4k 电视需要(可选)高分辨率版本的图像,它们可以作为“2x”图像提供,并存储在 drawable-xxxhdpi
文件夹中。同样,可以将仅针对 4k 电视的 dimensions/layouts 放置在 -xxxhdpi
.
(请特别注意 -tvdpi
限定符特定于 720p,几乎可以肯定不是您想要用来支持现代电视的限定符。)
文档稀疏且略有矛盾,但我主要基于以下来源:
https://developer.android.com/guide/practices/screens_support.html
试试这个
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