Android Focusable in Touch Mode 介绍
来源:互联网 发布:建筑结构优化设计 编辑:程序博客网 时间:2024/06/01 09:50
在学习 ListView 源码时,发现了 Focusable in Touch Mode 这个概念,注释的意思是:
whether this view can receive focus while in touch mode
字面意思是 一个 View 在 touch mode 下是否可以接收焦点。
什么是 touch mode 呢?
下面总结 官方文档 Touch Mode 的介绍:
Touch Mode
由于现在安卓手机基本都是触摸屏,导致我们没有意识到 Touch Mode 其实是一种特殊的状态,不同于 Selection, Focus。
在几年前,有些安卓手机上面还保留着键盘、触摸球(上图红色圈内),这个触摸球的作用相当于现在电视遥控器的上下左右键。
当我们用手触摸屏幕选中内容后,会进入 Touch Mode;
但是当我们用触摸球左右移动(按下遥控器方向键也一样)时,就会离开 Touch Mode;
听起来似乎很简单,但是一个控件还有其他状态,当这些状态切换时,你就要小心搞晕了。
Touch Mode, Selection, and Focus
安卓手机在过去的几年里经历了多种输入方式,比如手指、电容笔、 键盘、触摸球等等,开发人员需要对这些不同的操作有不同的响应。
现在的安卓应用开发比那个年代要轻松多了,但是在物联网发展下,我们还要考虑智能电视等其他智能设备的这些输入情景。
想象一下,有一个 ListView,当我们选中一个 Item 时,会进入 selected 状态 :
但是当我们按着的同时滑动手指,ListView 会滑动,同时你选中的这个 Item 会退出 selected 状态,你可以试试。
为什么会这样呢?
根据 官方文档 可以知道,framework 层为了降低有多种输入方式((比如同时支持触摸和遥控的智能电视)的情况下状态保持的复杂性,规定 In touch mode, there is no focus and no selection ,一旦一个 View 进入 touch mode, 它的 focused 和 selected 状态会被去掉。
In touch mode, there is no focus and no selection.
好的,我记住了。
但是!还有例外情况。
→_→
Focusable in Touch Mode
一般情况下在 touch mode 时会退出 focused 状态,但是在有些情况下我们希望在 touch mode 时仍然保持 focused 状态,于是有了这个值 focusableInTouchMode, 常用在 输入框 EditText 或者 ListView。
EditText 默认 focusableInTouchMode 为 true,因此我们点击后它才能获取焦点,当我们设置 EditText focusableInTouchMode 为 false 时,点击后获取不到焦点,也就无法输入。
当我们设置 ListView 的 focusableInTouchMode 为 false 时,它的 item 也无法获取不到焦点,这在有的场景下会有用处。
由于设置了这个属性后会引起正常交互不一致的效果,所以官方建议我们保守地使用这个属性,在你确定要用它之前最好三思而后行。
感谢:
http://android-developers.blogspot.fi/2008/12/touch-mode.html
http://www.cnblogs.com/xiaoweiz/p/3833079.html
http://zhidao.baidu.com/link?url=XIgERGPVdEqYduRPs-_IGBiSLI0Gt1ATvsb4gJdVCcblf_qyR2Pxc1ukkLIqtwT4zdlPQ7sO9HjMuxWarkGnt8CuYMTKzw5OVYG4kBXR_Sy
http://blog.csdn.net/fancylovejava/article/details/46973397
- Android Focusable in Touch Mode 介绍
- Android的Touch Mode
- Android Touch Mode
- Android的Touch Mode
- Android的Touch Mode
- Android的Touch Mode
- 说说Android中的touch mode
- touch mode
- Touch Mode
- 关于android:focusable属性
- Android touch mode和focusableInTouchMode分析
- Android touch mode和focusableInTouchMode分析
- Android touch mode和focusableInTouchMode分析
- Android touch mode和focusableInTouchMode分析
- Android 触摸模式(Touch Mode)
- Touch in Android
- Touch in Android
- 关于android:focusable属性 - daishuguang
- ajax原函数和各个常用参数列表
- 第四周 项目2-建立“单链表”算法库
- codevs 2645 Spore
- CFNetwork编程指南(四)——与身份验证HTTP服务器通信(Communicating with Authenticating HTTP Servers)
- 图的存储
- Android Focusable in Touch Mode 介绍
- 去掉TabLayout下的阴影,AppBarLayout下的阴影
- 遍历Map的两种方法:keySet()和entrySet()
- Android:Plugin is too old, please update to a more recent version解决方法
- Session
- CFNetwork编程指南(五)——使用FTP服务器(Working with FTP Servers)
- 安卓跨程序共享数据:内容提供器Content Provider
- 初识tinker
- Android的缓存策略:LruCache和DiskLruCache