【Android知识点精讲】(8)TV UI设计

本文出处:http://blog.csdn.net/scarthr/article/details/42194659

TV UI就是指Android系统的数字电视的图形交互界面。TV UI最大的特点就是屏幕大,为此我们要解决好以下3个问题:

1. 为大屏幕提供适当的布局源文件

2. 保证UI在一定距离仍然可以看清

3. 为高清电视提供高分辨率图标和图像


一 TV UI布局

1. 把屏幕上导航控制菜单放在屏幕的左边或右边,并且将菜单内容以垂直的方式显示。
2. 创建分段UI时,通过使用Fragment和GridView来替代ListView,充分利用水平空间视图。
3. 使用RelativeLayout和LinearLayout进行布局。这两种布局使Android系统能够针对大小、对齐、纵横比以及屏幕的像素密度来匹配视图的位置。
4. 在视图控制之间提供足够的余地来避免一个杂乱的用户界面。
5. 把文本插入用户能够快速扫描到的小块中
6. 背景色和文字要有鲜明的颜色对比。
7. 使用与密度无关的像素单元(dp和sp)而不是绝对的像素单元。
8. 尽量在高分辨率下调整UI,这样当屏幕分辨率降低时,也可以适配。图片方面,尽量使用9.png的格式来作图。

二 TV UI导航设计

1. 确保所有布局都处于按键导航控制之下。
2. 为可视化的导航提供清晰的反馈
3. 通过合理的布局,使每一个UI更容易方位。

当你在为遥控器设计导航时,要遵循以下原则:
1. 确保遥控器可以控制界内所有的控件。
2. 用上下键控制列表滚动时,当用确认键选中列表的某项时,确保列表仍然可以滚动。
3. 可控元素之间的移动需要简洁和可预测。

为焦点和选择状态提供清晰的显示,可以在drawable文件夹内创建xml文件实现:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- 选择状态 -->
    <item android:drawable="@drawable/tab_wy_now" android:state_selected="true"/>
    <!-- 按下状态 -->
    <item android:drawable="@drawable/tab_wy_now" android:state_pressed="true"/>
    <!-- 取得焦点状态 -->
    <item android:drawable="@drawable/tab_wy_now" android:state_focused="true"/>
    <!-- 悬浮状态 -->
    <item android:drawable="@drawable/tab_wy_now" android:state_hovered="true"/>
    <!-- 默认状态 -->
    <item android:drawable="@drawable/tab_wy"/>

</selector>

用户通过按尽可能少的按键导航到任何一个UI,导航应该简单易懂,对于稍显复杂的操作,需要提供带帮助功能的按钮、图标,用户一点击就弹出一个帮助对话框提示用户接下来的操作。
预测用户可能会切换的下一组界面,我们可以提供一个具有提现用户意图的导航。如果当前界面剩余空间很大,考虑吧屏幕分成多面板,可以用Fragment组成带有多个面板的界面。例如:在屏幕左边放置一个包含主标题列表的面板,右边就放置对应的包含副标题列表的面板。

三  TV不支持的功能

相机:android.hardware.camera

导航GPS:android.hardware.location.gps

麦克风:android.hardware.microphone

近场通信(NFC):android.hardware.nfc

通话:android.hardware.telephony

触屏:android.hardware.touchscreen

这些功能通常都是TV所不支持的。

如何设置Android系统不带有触摸功能呢?

在Manifest中配置:

    <uses-feature
        android:name="android.hardware.touchscreen"
        android:required="false" />
就可以安装到不支持的Android系统中。

通常电视是没有内置GPS的,如果你的程序需要用到地理位置信息,那么可以使用“static location provider”得到这些信息,这种方式是通过查询邮编完成的:

		LocationManager manager = (LocationManager)
				.getSystemService(Context.LOCATION_SERVICE);
		Location location = manager.getLastKnownLocation("static");
查出的结果保存在location对象中。
下面是检测当前可用性的代码,来区别是手机还是TV。

		if (getPackageManager().hasSystemFeature("android.hardware.telephony")) {
			Log.i("Mobile Test", "该设备是手机");
		} else if (getPackageManager().hasSystemFeature(
				"android.hardware.touchscreen")) {
			Log.i("Tablet Test", "该设备不支持通话,但是支持触屏");
		} else {
			Log.i("TV Test", "该设备是TV");
		}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java并发核心知识体系是指在Java编程语言中,用于处理多线程编程的一系列核心知识和技术。Xmind是一种思维导图工具,可以帮助我们清晰地组织和呈现这些知识体系。 Java并发核心知识体系包括以下内容: 1.线程基础知识:了解线程概念、线程创建和启动、线程状态转换等基本概念和操作。 2.线程安全:学习如何确保多个线程访问共享资源时的线程安全性,如使用锁、同步关键字、volatile关键字等。 3.锁和同步:深入研究各种锁的实现原理,比如synchronized关键字、ReentrantLock、ReadWriteLock等,并学习如何正确使用它们。 4.并发集合:了解Java中提供的线程安全的集合类,如ConcurrentHashMap、CopyOnWriteArrayList等。 5.线程通信:学习线程之间的协作和通信,包括使用wait()、notify()、notifyAll()等方法实现等待、通知机制。 6.线程池:学习如何使用线程池来管理和调度线程,提高线程的执行效率和资源利用率。 7.并发工具类:研究一些常用的并发工具类,如Semaphore、CountDownLatch、CyclicBarrier等。 8.原子操作:了解Java提供的原子操作类,如AtomicInteger、AtomicLong等,可以保证某些操作的原子性。 9.并发模型:掌握几种常用的线程并发模型,如生产者消费者模型、读者模型等。 Xmind可以帮助我们将以上知识整理成一张思维导图,以便更好地理解和记忆。我们可以用中心主题为“Java并发核心知识体系”,然后分支出各个子主题,如“线程基础知识”、“线程安全”、“锁和同步”等,再进一步细分为各个具体的知识点。通过这样清晰的组织结构,我们可以更加系统地学习和理解Java并发编程的核心知识。 ### 回答2: Java并发核心知识体系精讲xmind是一份专门用于讲解Java并发编程的思维导图。它通过图形化的方式系统地呈现了Java并发编程的核心知识,方便学习者理解和记忆。以下是对Java并发核心知识体系精讲xmind的回答: Java并发核心知识体系精讲xmind是一份非常有价值的学习资料,它对Java并发编程的相关知识进行了详细的整理和总结。通过该xmind文件,学习者可以快速了解并发编程的基本概念、原理和常用工具类,深入了解多线程、线程安全和锁机制等重要的内容。 该xmind文件首先介绍了并发编程的基本概念,如进程、线程和并发的概念,并讲解了线程的生命周期和线程的创建、启动、暂停、终止等操作。接着,该文件详细讲解了Java提供的并发编程的核心类,包括Thread、Runnable、Callable、Lock、Condition等,以及线程池和计数器等常用的并发工具类。 该xmind文件还深入讨论了Java并发编程中的一些重点内容,比如线程安全、原子性、可见性和有序性等问题。它解释了线程安全的概念,以及Java中如何实现线程安全,如使用同步机制、锁机制和原子类等方式。此外,该文件还介绍了线程间的通信方式,包括共享内存和消息传递。 在最后,该xmind文件还介绍了一些高级的并发编程技术,比如并发集合类、并发控制和并发算法等。它详细讲解了Java中提供的并发集合类,如ConcurrentHashMap和ConcurrentLinkedQueue等,并解释了它们的设计原理和使用方法。此外,该文件还介绍了一些常见的并发控制和并发算法,如信号量和读锁等。 综上所述,Java并发核心知识体系精讲xmind是一份非常有价值的学习资料,对于掌握Java并发编程知识和提高多线程编程能力非常有帮助。通过系统地学习该xmind文件,可以更好地理解并发编程的原理和应用,提高并发编程的技术水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值