10、TV UI
TV UI布局
1. 为大屏幕提供适当的布局源文件。
2. 确保UI在一定距离仍然可以看清。
3. 为高清电视提供高分辨率的图标和图像。
1. 把屏幕上的导航控制菜单放在屏幕的左边或者右边,并且将菜单内容 以垂直的方式显示。
2. 创建那些分段的UI时,通过使用Fragments和GridView来替代 ListView更能充分利用水平空间的视图。
3. 使用RelativeLayout和LinearLayout进行布局。这两种布局使 Android系统能够针对大小,对齐,纵横比,以及屏幕的像素密度来 匹配视图的位置。
4. 在视图控制之间提供足够的余地来避免一个杂乱的用户界面。
左右布局示例
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<fragment
android:id="@+id/leftsidecontrols"
android:layout_width="0dip"
android:layout_marginLeft="5dip"
android:layout_height="match_parent" />
<GridView
android:id="@+id/gridview"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
使文字和控制容易看到
1. 把文本插入用户能够快速地扫描到的小块中。
2. 在一个黑暗的背景中使用明亮的文本.这个风格在一台电视中更方便读。
3. 避免轻量级的字体以及那些要么非常窄要么非常宽的笔画字体.使用简 单的无衬线字体和使用抗混叠来提高可读性。
4. 用密度无关的像素单元而不是绝对的像素单元(dp和sp)。
针对高分辨率大屏幕设计
普遍的高清电视显示分辨率是720p 和1080p.把你的UI设置为1080p, 并且允许系统在必要的时候将你的UI分辨率下调到720p.通常下调并不意 味着是缩小你的UI界面(注意反之则不然,你应该避免倍增,因为它会降低 UI质量).
为了获得最佳的图片显示,如果可能的话以9-patch image元素来展示。 在你的布局中如果提供低质量或者小图片的话,它们将会出现像素化,模糊, 或呈颗粒状.对用户来说这不是一个好的用户体验.取而代之的是采用高质 量的图片.
TV UI导航的设计原则
1. 确保所有的布局都处于按键导航控制之下。
2. 为可视化的导航提供清晰的反馈。
3. 通过合理的布局,使用每一个UI更容易访问。
处理按键导航
在电视上,用户使用远程方式导航,例如遥控器或键盘,这就限定了 (屏幕光标)移动方式只有上、下、左、右。因此,要构建一个优秀的应用, 你必须在应用里提供一套用户可以快速学会的导航策略。
当你为遥控器设计导航时,遵循以下几点原则:
1. 确保遥控器可以控制界面在所有的控件。
2. 用上下键控制列表滚动时,当用确认键选中列表的某项时,确保列表 仍然可以滚动。
3. 可控元素之间的移动需要简洁和可预测。
下一个焦点控件
Android通常会自动处理布局元素中的导航顺序,所以通常并不需要 担心控件获得焦点的顺序。除非布局非常复杂,或者需要在布局元素之间 特殊移动,也是可以的。例如,现在有一个EditText控件,定义他的下一 个获得焦点的控件,可以设置如下的4个属性。
为焦点和选择提供清晰的提示
使用合适的颜色高亮显示被选中的元素,这样让用户很容易就知道哪 个可控元素被选中,另外,建议在整个应用程序中使用统一风格的高亮显 示。 安卓系统针对选中或获取焦点的控件使用Drawable State List Resources 实现高亮显示的效果,例如:
<!-- button.xml -->
<?xml version"utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- pressed -->
<item android:state_pressed="true"
android:drawable="@drawable/button_pressed" />
<!-- focused -->
<item android:state_focused="true"
android:drawable="@drawable/button_focused" />
<!-- hovered -->
<item android:state_hovered="true"
android:drawable="@drawable/button_focused" />
<!-- default -->
<item android:drawable="@drawable/button_normal" />
</selector>
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:background="@drawable/button" />
设计简易导航
用户通过按尽可能少的键导航到任何一个UI,导航应该简单易懂,对 于稍显复杂的操作,需要提供带帮助功能的按钮、图标,用户一点击就弹 出一个帮助对话框提示用户。
预测用户可能会切换的下一界面,我们可以提供一个(具有体现用户意 图)这样的导航。如果当前界面感觉很稀松,考虑把屏幕分成多面板,可 以用Fragment组成带有多个面板的界面。例如:在屏幕左边放一个包含 主标题列表的面板,右边就放置对应的包含副标题列表的面板。
TV不支持的功能
对于不支持功能的解决方案
安卓系统是默认设备带有触摸屏的,所以如果系统在电视上运行,就 得在配置文件mainfest配置一下,不需要触摸屏:
<uses-feature android:name="android.hardware.touchscreen" android:required="false"/>
因为电视固定的、室内设备,所以没有内置GPS。如果你的程序需要 用到地理位置信息,要么让用户(联网)查询,要么使用"static location provider" 得到这些信息,这种方式是通过查询邮编完成的。
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
Location location = locationManager.getLastKnownLocation("static");
运行时检测功能可用性
if (getPackageManager().hasSystemFeature("android.hardware.telephony")) {
Log.d("Mobile Test", "Running on phone"); }
else if (getPackageManager().hasSystemFeature("android.hardware.touchscreen"))
{
Log.d("Tablet Test", "Running on devices that don't support telphony but have a
touchscreen.");
}
else
{
Log.d("TV Test", "Running on a TV!");
}
10、TV UI的更多相关文章
- 10、android学习资源整理
1.github上整理好的开源工程 https://github.com/Trinea/android-open-project 2.最流行的android组件大全 http://colobu.com ...
- C# Windows Phone App 开发,修改【锁定画面】,从【Assets】、【UI】、【网路图片】,并解决失灵问题。
原文:C# Windows Phone App 开发,修改[锁定画面],从[Assets].[UI].[网路图片],并解决失灵问题. 一般我们在开发Windows Phone App,有时会希望透过应 ...
- C# Windows Phone App 开发,自制LockScreen 锁定画面类别(Class),从【网路图片】、【Assets资源】、【UI】修改锁定画面。
原文:C# Windows Phone App 开发,自制LockScreen 锁定画面类别(Class),从[网路图片].[Assets资源].[UI]修改锁定画面. 一般我们在开发Windows ...
- ABP(现代ASP.NET样板开发框架)系列之10、ABP领域层——实体
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之10.ABP领域层——实体 ABP是“ASP.NET Boilerplate Project (ASP.NET样板 ...
- cocos2dx-lua_修改源码流程(cocos2dx-3.10、win7、Cocos Code IDE1.2)
以下是在cocos2dx-3.10.win7.Cocos Code IDE1.2下假定你已经配置好了cocos2dx的环境.1.修改源代码步骤(1)在Cocos/Cocos2d-x/cocos2d-x ...
- 关于ExtJS、JQuery UI和easy UI的选择问题
转自百度知道. 问:做企业级应用,比如***管理系统,不需要华丽的特效,只希望简单,风格统一.能用到的只有messagebox.tree.grid大概这几个,其他特效不要,忘大神根据自己的见解以及我这 ...
- 10 Best TV Series Based On Hacking And Technology
Technology is rapidly becoming the key point in human lives. Here we have discussed top TV shows whi ...
- 《jQuery、jQuery UI及jQuery Mobile技巧与示例》勘误收集
此书由程学彬 (http://weibo.com/ironbin)和我合译完成,此篇博客作为勘误收集而用,若译文有误或者有任何疑问,欢迎留下评论,或者给我发邮件(地址:gzooler@gmail.co ...
- javascript 常见数组操作( 1、数组整体元素修改 2、 数组筛选 3、jquery 元素转数组 4、获取两个数组中相同部分或者不同部分 5、数组去重并倒序排序 6、数组排序 7、数组截取slice 8、数组插入、删除splice(需明确位置) 9、数组遍历 10、jQuery根据元素值删除数组元素的方)
主要内容: 1.数组整体元素修改 2. 数组筛选 3.jquery 元素转数组 4.获取两个数组中相同部分或者不同部分 5.数组去重并倒序排序 6.数组排序 7.数组截取slice 8.数组插入.删除 ...
随机推荐
- hdu 4586 Play the Dice
思路:设期望值为s,前m个是再来一次机会,则有 s=(a[1]+s)/n+(a[2]+s)/n+……+(a[m]+s)/n+a[m+1]/n…… 化简:(n-m)s=sum 当sum=0时,为0: 当 ...
- hadoop集群基本配置
最近在学习hadoop.网上具体过程很多,我就说说简单过程和注意问题. 环境:宿主机(windows64),虚拟机(centos64). 准备软件: 1.Vmware——虚拟机 2.centos镜像文 ...
- 【mongoDB运维篇②】备份与恢复(导入与导出)
导入/导出可以操作的是本地的mongodb服务器,也可以是远程的服务器 所以,都有如下通用选项: -h host 主机 --port port 端口 -u username 用户名 -p passwd ...
- *Linux之rm命令
自己瞅: [root@winner ~]# rm --help//rm-->remove用法:rm [选项]... 文件... 删除 (unlink) 文件. -f, --force 强制删除. ...
- 尝鲜delphi开发android/ios_环境搭建
Delphi这又老树发新枝了,开始做终端程序开发了,这个东西的准确名字是:RAD Studio XE5,可以使用delphi和c++ builder进行终端开发. 我尽可能讲啰嗦一些,免得回头被人问. ...
- IOS基础框架
GameKit 为游戏提供网络功能:点对点互联和游戏中的语音交流 AddressBook 提供访问用户联系人信息的功能 AddressBookUI 提供一个用户界面,用于显示存储在地址簿中的联系人信息 ...
- Word 中没有Endnote工具栏的解决方法
环境:Windows XP + Word 2003 + EndNote 6 以下各方法可以依次试一下,需要重启Word后才能看到是否可行.1 视图 -- 工具栏 -- EndNote,是否打勾.2 w ...
- IntelliJ IDEA For Mac 快捷键——常用版
一.搜索 搜索文件 command+shift+n 打开方法实现类 command+option+b 全文搜索 ctrl+shift+f (1)类和方法 查看类的继承结构 ctrl+h 查看方法的 ...
- 爬虫技术(五)-- 模拟简单浏览器(附c#代码)
由于最近在做毕业设计,需要用到一些简单的浏览器功能,于是学习了一下,顺便写篇博客~~大牛请勿喷,菜鸟练练手~ 实现界面如下:(简单朴素版@_@||) button_go实现如下: private vo ...
- sqlserver得到昨天的数据
SELECT * FROM test where DATEDIFF(d,witdate,getdate()) = 1 witdate表示的比较字段