触摸模式(Touch mode )

触摸模式(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

posted @ 2012-07-16 12:45  kobe8  Views(1123)  Comments(0Edit  收藏  举报