Android Studio V3.12环境下TV开发教程(三)为电视制作布局

Android Studio V3.12环境下TV开发教程

(转自Android官网https://developer.android.com/training/tv/start)

文章源自:光谷佳武 https://blog.csdn.net/jiawuhan/article/details/80619108

为电视制作布局

通常从大约10英尺远的地方观看电视屏幕,虽然它比大多数其他Android设备显示器大得多,但这种类型的屏幕不能提供与较小设备相同级别的精确细节和颜色。 这些因素要求您创建具有电视设备的应用布局,以创建有用且令人愉快的用户体验。

本课介绍在电视应用程序中构建有效布局的最低要求和实施细节。

您还应该阅读Android TV Design

使用电视的布局主题

Android 主题可以为电视应用中的布局提供基础。 您应该使用主题来修改要在电视设备上运行的应用活动的显示。 本节介绍您应该使用哪些主题。

Leanback主题

v17 leanback支持库包括Theme.Leanback ,这是电视活动的主题,提供了一致的视觉风格。 我们强烈建议将此主题用于使用v17 leanback类构建的任何电视应用程序。 以下代码示例演示如何将此主题应用于活动:

android:theme="@style/Theme.Leanback">

注意: leanback主题不包含操作栏,因为Android TV应用程序中没有任何操作栏。 如果您的应用使用支持片段(如BrowseSupportFragment ,则您的活动必须扩展FragmentActivity 。 不要使用试图为操作栏设置主题并产生错误的AppCompatActivity :

java.lang.RuntimeException: Unable to start activity ComponentInfo{...} :java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with thisactivity.

NoTitleBar主题

标题栏是手机和平板电脑上Android应用的标准用户界面元素,但不适用于电视应用。 如果您不使用v17 leanback类,则应将此主题应用于电视活动,以禁止显示标题栏。 以下来自TV应用程序清单的代码示例演示了如何应用此主题来删除标题栏的显示:

  ...

  android:theme="@android:style/Theme.NoTitleBar">    ...


建立基本的电视布局

电视设备的布局应遵循一些基本指导原则,以确保它们在大屏幕上可用和有效。 按照以下提示构建针对电视屏幕优化的景观布局:

以横向方向构建布局。 电视屏幕始终以横向模式显示。

在屏幕的左侧或右侧放置屏幕导航控件,并保存内容的垂直空间。

使用Fragments创建分为多个部分的UI,并使用视图组(如GridView而不是ListView更好地使用横向屏幕空间。

使用诸如RelativeLayoutLinearLayout类的视图组来排列视图。 该方法允许系统将视图的位置调整为电视屏幕的大小,对齐方式,高宽比和像素密度。

在布局控件之间添加足够的边距以避免混乱的UI。

过扫描

由于电视标准的发展以及总是向观众呈现全屏图像的愿望,电视布局具有一些独特的要求。 出于这个原因,电视设备可能会剪辑应用布局的外部边缘,以确保整个显示屏都被填满。 这种行为通常被称为过扫描 。

屏幕元素必须始终对用户可见,应放置在过扫描安全区域内。 在左右边缘上添加48dp的5%余量,并在顶部和底部边缘上添加27dp的布局,以确保该布局中的屏幕元素位于过扫描安全区域内。

用户不直接与之交互的背景屏幕元素不应该被调整或剪裁到过扫描安全区域。 这种方法确保背景屏幕元素在所有屏幕上看起来都正确。

以下示例显示了可包含背景元素的根布局以及具有5%边距且可包含过扫描安全区域内元素的嵌套子布局:

                  

小心:如果您使用v17 leanback类(如BrowseFragment或相关小部件), BrowseFragment过扫描边距应用于布局,因为这些布局已包含过扫描安全边距。

构建可用的文本和控件

电视应用程序布局中的文本和控件应该可以从远处轻松查看和导航。 按照以下提示使您的用户界面元素更易于从远处看到:

将文本分成用户可以快速扫描的小块。

在深色背景上使用浅色文字。 这种风格在电视上更容易阅读。

避免使用既非常窄又非常宽的笔划的轻量级字体或字体。 使用简单的sans-serif字体和抗锯齿来提高可读性。

使用Android的标准字体大小:

android:textAppearance="?android:attr/textAppearanceMedium"/>

确保所有视图小部件都足够大,以便远离屏幕10英尺的人员清晰可见(对于非常大的屏幕,此距离更大)。最好的方法是使用布局相对大小而不是绝对大小,以及与密度无关的像素(倾斜)单位而不是绝对像素单位。 例如,要设置窗口小部件的宽度,请使用wrap_content代替像素测量,并为窗口小部件设置页边距,请使用dip值而不是px值。

有关与密度无关的像素和建筑物布局以处理较大屏幕尺寸的更多信息,请参阅支持多个屏幕 。

管理电视的布局资源

常见的高清电视显示分辨率为720p,1080i和1080p。 您的电视布局应以1920 x 1080像素的屏幕尺寸为目标,然后允许Android系统在必要时将布局元素缩小至720p。 一般来说,缩小比例(去除像素)不会降低您的布局演示质量。 但是,升级会导致显示效果,降低布局质量,并对应用的用户体验产生负面影响。

要获得图像的最佳缩放结果,请尽可能将它们作为9贴片图像元素提供。 如果在布局中提供低质量或小图像,则会出现像素化,模糊或颗粒感,这对用户来说不是一个好的体验。 改为使用高质量的图像。

有关优化大屏幕布局和资源的更多信息,请参阅多屏幕设计 。

避免布局反模式

有几种构建布局的方法,您应该避免,因为它们在电视设备上不能很好地工作,并导致不良的用户体验。 以下是开发电视布局时应特别不要使用的一些用户界面方法。

重复使用手机或平板电脑布局 - 请勿在未经修改的情况下重复使用手机或平板电脑应用中的布局。 为其他Android设备外观设计的布局不适合电视设备,因此应简化以便在电视上操作。

ActionBar - 虽然建议在手机和平​​板电脑上使用此用户界面约定,但它不适用于电视界面。 特别是,由于用遥控器导航这样的菜单很困难,所以强烈建议使用操作栏选项菜单(或任何用于该事项的下拉菜单)。

ViewPager - 在屏幕之间滑动可以在手机或平板电脑上运行,但不要在电视上试用!

有关设计适合电视的布局的更多信息,请参阅电视设计指南。

处理大型位图

与任何其他Android设备一样,电视设备的内存量有限。 如果您使用非常高分辨率的图像构建应用布局,或在应用操作中使用许多高分辨率图像,则它可能会迅速进入内存限制并导致内存不足错误。 为了避免这些类型的问题,请遵循以下提示:

仅当图像显示在屏幕上时才加载图像。 例如,当在GridViewGallery显示多个图像时,只在视图的Adapter上调用getView()时才加载图像。

在不再需要的Bitmap视图上调用recycle() 。

使用WeakReference在内存Collection存储对Bitmap对象的引用。

如果您从网络获取图像,请使用AsyncTask将其提取并存储在设备上以加快访问速度。 切勿在应用程序的主用户界面线程上执行网络事务。

在下载大图时将大图缩小到更适合的大小; 否则,下载图像本身可能会导致内存不足异常。

有关处理图像时获得最佳性能的更多信息,请参阅高效显示位图 。

提供有效的广告

对于起居室环境,我们建议您使用30秒内全屏和可忽略的视频广告解决方案。 必须使用D-pad而非触摸才能访问Android TV上的广告功能,例如解除按钮和点击。

Android TV不提供网络浏览器。 您的广告不得尝试启动网络浏览器或重定向到未获得Android TV设备许可的Google Play商店内容。

注意:您可以使用WebView类登录Google+和Facebook等服务。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容