创建电视页面布局
用户通常在距离电视屏幕10英尺的位置观看,并且它远远大于大多数Android设备的显示屏,但是这种类型的屏幕不能提供与小屏幕相同级别的细节和颜色。这些因素要求你为电视设备创建应用布局时,能创造一个有效的和愉快的用户体验。
使用布局主题
Android主题能为你的应用提供基础的布局。您应该使用一个主题来修改您的应用程序的activity的显示,这意味着这些activity要在电视设备上运行。
Leanback 主题
v17 leanback library为TV activity提供一个标准的主题通过调用Theme.Leanback. 这个主题为电视应用程序建立了一个一致的视觉风格。大多数电视应用程序推荐使用此主题。代码如下:
<activity
android:name="com.example.android.TvActivity"
android:label="@string/app_name"
android:theme="@style/Theme.Leanback">
NoTitleBar 主题
在手机和平板电脑的Android应用程序中,标题栏是一个标准的用户界面元素,但它不适合的电视应用程序。如果你没有使用v17 Leanback,你需要使用这个主题使标题栏不显示。代码如下:
<application>
...
<activity
android:name="com.example.android.TvActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar">
...
</activity>
</application>
创建基本的电视机布局
电视设备的布局应遵循以下基本准则,以确保它们在大屏幕上是可用和有效的。
1.横屏显示模式。
2.将屏幕导航控件放在屏幕的左侧或右侧,并保存内容的垂直空间。
3.将界面分成一些区块,使用Fragment,使用GridView代替Listview来更好的利用水平空间。
4.使用视图组来排列视图,如 RelativeLayout,LinearLayout。这种方法允许系统调整视图的位置的大小,对齐,纵横比和电视屏幕的像素密度。在布局控件之间添加足够的边距以避免混乱的布局。
过扫描
为了始终呈现一个完整的屏幕图片给观众,电视的布局有一些独特的要求是由于电视标准的演变导致的。出于这个原因,电视设备可以剪辑应用程序布局的外边缘,以确保整个显示被填充。这种行为通常被称为过扫描。
屏幕元素必须放置在用户随时可见的过扫描的安全区内。添加5%的安全边距,左右48dp,上下27dp。代码如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Screen elements that can render outside the overscan safe area go here -->
<!-- Nested RelativeLayout with overscan-safe margin -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="27dp"
android:layout_marginBottom="27dp"
android:layout_marginLeft="48dp"
android:layout_marginRight="48dp">
<!-- Screen elements that need to be within the overscan safe area go here -->
</RelativeLayout>
</RelativeLayout>
注:如果你使用了v17 leanback就不要添加过扫描边距了,因为这些布局已经合并过过扫描边距了。
建立可用的文本和控件
电视应用程序布局中的文本和控件在远处应该很容易被看见和操控。
1.将文本分割成小块,使用户可以快速浏览。
2.在暗背景上使用亮文本。这种风格在电视上更容易阅读。
3.避免有非常窄或非常宽笔划的轻量级字体。使用简单的无衬线字体和防锯齿增加可读性。
4.使用Android的标准字体大小:
<TextView
android:id="@+id/atext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceMedium"/>
5.确保所有的视图部件都足够大,人坐在离屏幕10英尺远的地方可以清楚地看到(这个距离对于超大屏幕来说更大)。最好的方法是使用布局相对大小,而不是绝对大小,使用密度无关像素(DIP)单位,而不是绝对像素单位。
管理电视布局资源
普通高清电视的显示分辨率为720p、1080i和1080p。你的电视布局应针对1920×1080像素的屏幕尺寸,然后允许Android系统降级你的布局元素在720p的分辨率上。在一般情况下,降低分辨率(删除像素)不会降低你的布局演示质量。然而,提升分辨率可能导致你的布局的显示质量降低,对你的应用程序的用户体验造成负面影响。
为了得到图像的最佳尺度的结果,尽可能使用9-patch图片。如果你在你的布局使用低质量或小的图像,他们会出现像素化,模糊或粗糙,用户体验差。应使用高质量的图像代替。
避免布局反模式
1.重用手机或平板电脑布局。不要在没有修改的情况下重用手机或平板电脑的布局。其他Android设备的布局不适合电视设备,应简化操作。
2.ActionBar 。不适合电视界面。
3.ViewPager。屏幕之间滑动可以在手机或平板电脑上工作,但不要在电视上尝试!
TV Desgin
处理大图片
电视设备像任何其他Android设备一样都有一个有限的内存量。如果你用高分辨率的图像构建应用程序布局或者在应用程序的操作中使用许多高分辨率图像,它会快速地运行到内存阀值并导致内存溢出。
为了避免这些类型的问题,遵循以下提示:
1.只有在屏幕上显示时才加载图像。
2.清除不再需要的位图。
3.使用WeakReference引用位图存储在内存中的集合对象。
4.如果你的图片从网络获取,使用AsyncTask获取,为了更快的访问可以将其存到设备中。
5.下载时将图像缩小到合适的大小。
提供有效的广告
对于居室环境,我们建议你使用全屏且在30秒内关闭的视频广告。Android电视广告的功能,如关闭按钮和点击率,必须使用键盘而不是触摸。
Android TV不提供网页浏览器。你的不能启动网页浏览器或者重定向到Google Play未经允许的Android设备。