Bag*_*yer 8 android android-tv
为了定义1080p和720p android TV的不同维度值,我需要决定应该使用哪个限定符.当我尝试使用像值-sw1080p,values-sw720p这样的东西时,它不起作用.dimes.xml中的值不会影响任何内容.但是如果我使用像-sw540dp,-sw360dp这样的限定符,它就可以工作.我真的不明白为什么这样.任何的想法?谢谢.
Android TV可以考虑三种屏幕密度,以及三种相应的限定符.这些包括:
但根据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 /sf/answers/810725051/
首先,你是完全正确的.您可以使用
sw360dp/ : 720p screens
sw540dp/ : 1080p screens
Run Code Online (Sandbox Code Playgroud)
sw720p/sw1080p不起作用的原因是因为它们不作为限定符存在.
这是有关使用不同屏幕尺寸的官方文档.您可以阅读,如果要计算dp文件夹,则需要考虑两个不同的单位:像素数(例如720)和像素密度(即每英寸点数单位或像素数)适合一英寸).
公式非常简单:
px = dp * (dpi / 160)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我们有:
dp = px * 160 / dpi
Run Code Online (Sandbox Code Playgroud)
当然,电视可以有不同的密度:这个表格会告诉你更多信息(来源:官方文档).

假设我们有1080p显示屏,具有超高密度(@ 320 dpi).我们做数学
dp = 1080 * 160 / 320 = 540
Run Code Online (Sandbox Code Playgroud)
所以我们得到适当的文件夹来放入您的资源.
编辑:在同一页面上,声明有一个特定的tvdpi限定符可用于与电视相关的资源(周围213 dpi).
| 归档时间: |
|
| 查看次数: |
8099 次 |
| 最近记录: |