触摸模式(Touch mode )
当用户直接使用keys或trackball与UI进行交互的时候, 必须先使目标控件获取焦点(比如按钮),这样用户才会注意到是什么控件接收输入. 然而如果设备支持触摸手势的话, 用户可能使用触摸屏与UI进行交互, 这个时候就没有必要将目标控件高亮显示了(即,获取焦点). 因此就产生了这样一种交互模式叫"touch mode ."
对于一个拥有触摸屏功能的设备而言, 一旦用户用手点击屏幕, 设备立刻进入touch mode . 这时候被点击的控件只有isFocusableInTouchMode()方法返回true的时候才会 focusable , 比如EditText控件. 其他可以触摸的控件, 比如按钮, 当被点击的时候不会获取焦点; 它们只是简单地执行onClick事件而已.
任何时候只要用户点击key或滚动trackball, 设备就会退出touch mode ,并且找一个view将焦点置于其上. 此时用户可以不使用触摸手势了.
touch mode 在整个系统运行期间都是有效的(在任何activities中). 如果想要查询当前处于何种状态, 你可以调用View#isInTouchMode()来看看当前是否处于touch mode .
查询各种常用控件的默认初始状态
isClickable()
isLongClickable()
isFocusable()
isFocusableInTouchMode()
Android .widget.TextView
Clickable : false
LongClickable : false
Focusable : false
FocusableInTouchMode : false
android .widget.Button
Clickable : true
LongClickable : false
Focusable : true
FocusableInTouchMode : false
android .widget.Chronometer
Clickable : false
LongClickable : false
Focusable : false
FocusableInTouchMode : false
android .widget.DigitalClock
Clickable : false
LongClickable : false
Focusable : false
FocusableInTouchMode : false
android .widget.EditText
Clickable : true
LongClickable : true
Focusable : true
FocusableInTouchMode : true
android .widget.AutoCompleteTextView
Clickable : true
LongClickable : true
Focusable : true
FocusableInTouchMode : true
android .widget.CheckBox
Clickable : true
LongClickable : false
Focusable : true
FocusableInTouchMode : false
android .inputmethodservice.ExtractEditText
Clickable : true
LongClickable : true
Focusable : true
FocusableInTouchMode : true
android .widget.MultiAutoCompleteTextVie
w
Clickable : true
LongClickable : true
Focusable : true
FocusableInTouchMode : true
android .widget.RadioButton
Clickable : true
LongClickable : false
Focusable : true
FocusableInTouchMode : false
android .widget.ToggleButton
Clickable : true
LongClickable : false
Focusable : true
FocusableInTouchMode : false
android .widget.AnalogClock
Clickable : false
LongClickable : false
Focusable : false
FocusableInTouchMode : false
android .widget.ImageView
Clickable : false
LongClickable : false
Focusable : false
FocusableInTouchMode : false
android .widget.ImageButton
Clickable : true
LongClickable : false
Focusable : true
FocusableInTouchMode : false
android .widget.ZoomButton
Clickable : false
LongClickable : true
Focusable : true
FocusableInTouchMode : false
android .widget.ProgressBar
Clickable : false
LongClickable : false
Focusable : false
FocusableInTouchMode : false
android .widget.SeekBar
Clickable : false
LongClickable : false
Focusable : true
FocusableInTouchMode : false
android .widget.RatingBar
Clickable : false
LongClickable : false
Focusable : true
FocusableInTouchMode : false
android .view.SurfaceView
Clickable : false
LongClickable : false
Focusable : false
FocusableInTouchMode : false
android .opengl.GLSurfaceView
Clickable : false
LongClickable : false
Focusable : false
FocusableInTouchMode : false
android .widget.VideoView
Clickable : false
LongClickable : false
android .view.ViewStub
Clickable : false
LongClickable : false
Focusable : false
FocusableInTouchMode : false
Layout只测试了LinearLayout,在这里主观臆断地认为其他Layout都和LinearLayout一样
android .widget.LinearLayout
Clickable : false
LongClickable : false
Focusable : false
FocusableInTouchMode : false
分享到:
相关推荐
3. **获得焦点并被按下**:在非触摸模式下,如果控件获得了焦点并且被按下,会显示`pic2`。 4. **被按下但未获得焦点**:在触摸模式下,如果控件被按下但没有焦点,会显示`pic3`。 5. **选中状态**:当控件被选中时...
- 考虑到Android设备的多样性,确保你的自定义时间选择器在各种屏幕尺寸和横竖屏模式下都能正常工作。 通过以上知识点的掌握和实践,你可以在Android应用中实现一个与iOS风格相似的时间选择器。不过要注意,虽然...
- `navigation`: 导航模式变更(例如从键盘导航到触摸屏导航)。 - `orientation`: 屏幕方向变更。 **应用场景:** - **屏幕旋转适应性:**大多数 Android 应用需要支持屏幕旋转。默认情况下,当屏幕方向发生变化时...
2. **SeekBar控件**:SeekBar是Android UI组件之一,它允许用户通过触摸滑动来选择一个介于两个值之间的数值。开发者可以自定义它的最小值、最大值和默认值,常用于音量、亮度、进度等控制场景。 3. **自定义控件**...
34. **SharedPreferences陷阱**:使用`getString`时,如果键值不存在,会返回默认值,注意处理这种情况。 35. **TextView的EMS和Maxlength**:EMS用于设置单行文本的最大宽度,Maxlength限制总字符数,两者结合可...
`attire`还支持属性的默认值,如果在XML中没有指定某个属性,可以为其设置一个默认值,避免空值异常。同时,`attire`提供了类型安全的API,减少了因为类型转换错误导致的问题。 在实际应用中,`attire`库可以帮助...
- 多选菜单和单选菜单:控制用户的选择模式。 - 上下文菜单:与特定控件关联的菜单。 25. **ActionBar详解** - 提供了一个标准的标题栏。 - 可以包含标题、按钮等元素。 - 支持下拉导航、操作视窗等功能。 26...
首先,使用`mCirclePaint`绘制圆的背景,然后根据进度值利用`PorterDuff.Mode.SRC_IN`模式绘制进度条,这个模式可以将进度所在矩形与圆的交集部分保留下来,形成水面上涨的效果。接着,通过贝塞尔曲线来实现水波纹的...
`startMeasure()`方法根据MeasureSpec获取宽度和高度,如果模式是EXACTLY(即父布局已经指定了确切尺寸),则直接使用该尺寸;否则,我们可以设定一个默认值,例如400dp。在`onSizeChanged()`中,我们获取到控件的...
这里我们需要处理`MeasureSpec`的各种模式(EXACTLY, AT_MOST, UNSPECIFIED),并根据用户的需求设定最小尺寸: ```java @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { ...
自定义视图可能需要重写构造函数,以便在创建时初始化参数或设置默认值。这可以通过传递属性或者依赖注入来实现。 3. **onDraw()方法**: 自定义视图的核心在于`onDraw()`方法,它负责绘制视图的内容。通过调用`...
可以使用ViewHolder模式减少视图复用的开销,或者使用FragmentStatePagerAdapter来避免内存泄漏。 总之,"ScrollView兼容ViewPager代码demo"涉及到的是Android开发中的视图嵌套和事件处理技巧,通过合理的布局设计...
通常,下拉框显示一个简短的初始文本,称为默认值或标题,当用户点击或触摸时,会展示一个包含多个选项的列表。下拉框可以节省空间,特别是在屏幕空间有限的情况下,提高界面的整洁性和易用性。 二、多条件选择 多...
这是重要的一点,如果你想持续的对SuperTextView的触摸事件进行处理,你必须使onTouch()返回true。否则你只能接收到一个ACTION_DOWN事件,而不是一个事件流。public class YourAdjuster extends SuperTextView....
`onTouchEvent(MotionEvent event)`方法用于处理触摸事件,而使用`OnCheckedChangeListener`或观察者模式可以监听属性变化。 6. **优化性能**: 自定义View的性能优化是关键。避免在`onDraw()`中进行耗时操作,...
源代码通常由多种编程语言组成,例如Java(Android)、Swift(iOS)或C#(Unity),它们用于处理游戏的用户界面、逻辑运算、碰撞检测、得分系统等功能。资源文件则包括游戏中的图像素材,可能有游戏背景、图标、按钮...
- **详解**: UIAutomator 是 Android 提供的一个用于 UI 测试的工具框架,可以模拟用户的触摸和手势操作。要模拟滚动屏幕的操作,可以通过 `scroll` 命令实现。 - **命令格式**: `device(scrollable=True).scroll...