9

为了为 1080p 和 720p android TV 定义不同的尺寸值,我需要决定应该使用哪个限定符。当我尝试使用 values-sw1080p、values-sw720p 之类的东西时,它不起作用。dimes.xml 中的值不会影响任何内容。但如果我使用 -sw540dp、-sw360dp 之类的限定符,它会起作用。我真的不明白为什么会这样。任何的想法?谢谢。

4

3 回答 3

12

Android TV 可以考虑三种屏幕密度,以及三种相应的限定符。这些包括:

  1. tvdpi - (213dpi) - 用于 720p 电视;
  2. xhdpi - (320dpi) - 用于 1080p (HD) 电视;
  3. xxxhdpi - (640dpi) - 用于 4k(超高清)电视。

但根据https://developer.android.com/training/tv/start/layouts.html#density-resources

您的电视布局应以 1920 x 1080 像素 [标准 1080p/HD] 的屏幕尺寸为目标,然后在必要时允许 Android 系统将您的布局元素缩小到 720p。

这意味着,如果您遵循此建议并始终按照 1080p 规格进行设计,则可以使用-television UI 模式限定符并完成它。

但是,如果您需要为不同的电视尺寸提供不同的图像和布局,您可以使用上面的屏幕密度限定符。

电视的“标准”图像和布局可以存储在一个-xhdpi文件夹中,xhdpi用于 1080p 电视的限定符也是如此。

如果 4k 电视需要(可选)高分辨率版本的图像,它们可以作为“2x”图像提供,并存储在drawable-xxxhdpi文件夹中。同样,仅针对 4k 电视的尺寸/布局可以放置在-xxxhdpi.

(特别注意,-tvdpi限定符特定于 720p,并且几乎可以肯定不是您想要用来支持现代电视的。)

文档稀疏且略有矛盾,但我主要基于以下来源:

https://developer.android.com/guide/practices/screens_support.html https://stackoverflow.com/a/11581786/925478

于 2016-11-07T20:03:00.520 回答
6

首先,你基本上是正确的。您可以使用

sw360dp/ : 720p screens
sw540dp/ : 1080p screens

不起作用的原因sw720p/sw1080p是因为它们不作为限定词存在。

这是有关使用不同屏幕尺寸的官方文档。如您所见,如果要计算dp文件夹,需要考虑两个不同的单位:像素数(例如 720)和像素密度(即每英寸点数单位,或多少像素适合一英寸)。

公式很简单:

px = dp * (dpi / 160)

而在这种情况下,我们有:

dp = px * 160 / dpi

当然,电视可以有不同的密度:这张表告诉你更多关于它的信息(来源:官方文档)。

密度表

假设我们有一个具有超高密度 (@320 dpi) 的 1080p 显示器。我们做数学

dp = 1080 * 160 / 320 = 540

因此,我们获得了适当的文件夹来放置您的资源。


编辑:在同一页面上,声明有一个特定的tvdpi限定符可用于与电视相关的资源(大约213 dpi)。

于 2015-01-16T07:44:38.697 回答
1

试试这个

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

于 2021-01-17T06:50:48.423 回答