Input Events
2016-08-12 10:08
281 查看
Android 系统提供了很多中方法和用户交互.最好的方式是捕捉和用户交互view的事件。view 类提供这种方法.
Event Listeners:
event listener 是一个可以和view class 交互的方法。用户在和UI组件交互是会触发这个UI组件注册的event listner.主要分为以下几个callback函数.
onClick():View.OnClickListener 提供的方法。当用户触摸组件或者用导航键或者轨迹球将焦点放到这个组件上,并输入enter按键或者按下轨迹球,这个函数就会被调到.没有返回值.
onLongClick():View.OnClickListener 提供的方法,当用户按住UI 组件超过1s时,就会触发这个函数.返回一个boolean 类型,true的话,表示消耗了这个event,不在在往下传递了,fasle的话,表示要继续传递这个event.
onFocusChange():View.OnFocusChangeListener 提供的方法.当UI 组件获得或者失去焦点时。返回一个boolean 类型,true的话,表示消耗了这个event,不在在往下传递了,fasle的话,表示要继续传递这个event.
onKey(): View.OnKeyListener提供的方法.组件获得焦点,然后按下或者释放设备上的硬按键时.返回一个boolean 类型,true的话,表示消耗了这个event,不在在往下传递了,fasle的话,表示要继续传递这个event.
onTouch():View.OnTouchListener提供的方法.按下,释放,或者任何的手势。返回一个boolean 类型,true的话,表示消耗了这个event,不在在往下传递了,fasle的话,表示要继续传递这个event.
onCreateContextMenu(): View.OnCreateContextMenuListener提供的方法.当绑定Context且长按时.
要使用这些event listner 一般可以直接implement 这些interface或者定义匿名class。下面是on-click的实例.
// Create an anonymous implementation of OnClickListener
private OnClickListener mCorkyListener = new OnClickListener() {
public void onClick(View v) {
// do something when the button is clicked
}
};
protected void onCreate(Bundle savedValues) {
...
// Capture our button from layout
Button button = (Button)findViewById(R.id.corky);
// Register the onClick listener with the implementation above
button.setOnClickListener(mCorkyListener);
...
}
先new 一个匿名class,然后调用setOnClickListener 来设定event listner,这样当用户按button时就会触发mCorkyListener 中的onClick函数.
public class ExampleActivity extends Activity implements OnClickListener {
protected void onCreate(Bundle savedValues) {
...
Button button = (Button)findViewById(R.id.corky);
button.setOnClickListener(this);
}
// Implement the OnClickListener callback
public void onClick(View v) {
// do something when the button is clicked
}
...
}
也可以implement OnClickListener 然后调用setOnClickListener(this)的方式进行,效果和前一种的匿名clas实现是一样的.
Event Handlers:你可以定义一些默认的event handler。
onkeyDown(int,keyEvent):当一个新的key event产生时,被调用.
onKeyUp(int,keyEvent):key up 产生时
onTrackballEvent(MotionEvent):轨迹球移动事件产生时
onTouchEvent(MotionEvent):触摸屏幕时。
onFocusChange(boolean,int,Rect):view gains 或者失去焦点时.
下面这几个不是view class,但是可以直接影响你的handle event
Activity.dispatchTouchEvent(MotionEvent):在touch event被发送给window之前允许你的activity 和所有的touch event交互
ViewGroup.onInterceptTouchEvent(MotionEvent):允许event被发送给自view的同时允许viewgroup 查看eventViewParent.requestDisallowInterceptTouchEvent(boolean):不要和InterceptTouchEvent 交互.
Event Listeners:
event listener 是一个可以和view class 交互的方法。用户在和UI组件交互是会触发这个UI组件注册的event listner.主要分为以下几个callback函数.
onClick():View.OnClickListener 提供的方法。当用户触摸组件或者用导航键或者轨迹球将焦点放到这个组件上,并输入enter按键或者按下轨迹球,这个函数就会被调到.没有返回值.
onLongClick():View.OnClickListener 提供的方法,当用户按住UI 组件超过1s时,就会触发这个函数.返回一个boolean 类型,true的话,表示消耗了这个event,不在在往下传递了,fasle的话,表示要继续传递这个event.
onFocusChange():View.OnFocusChangeListener 提供的方法.当UI 组件获得或者失去焦点时。返回一个boolean 类型,true的话,表示消耗了这个event,不在在往下传递了,fasle的话,表示要继续传递这个event.
onKey(): View.OnKeyListener提供的方法.组件获得焦点,然后按下或者释放设备上的硬按键时.返回一个boolean 类型,true的话,表示消耗了这个event,不在在往下传递了,fasle的话,表示要继续传递这个event.
onTouch():View.OnTouchListener提供的方法.按下,释放,或者任何的手势。返回一个boolean 类型,true的话,表示消耗了这个event,不在在往下传递了,fasle的话,表示要继续传递这个event.
onCreateContextMenu(): View.OnCreateContextMenuListener提供的方法.当绑定Context且长按时.
要使用这些event listner 一般可以直接implement 这些interface或者定义匿名class。下面是on-click的实例.
// Create an anonymous implementation of OnClickListener
private OnClickListener mCorkyListener = new OnClickListener() {
public void onClick(View v) {
// do something when the button is clicked
}
};
protected void onCreate(Bundle savedValues) {
...
// Capture our button from layout
Button button = (Button)findViewById(R.id.corky);
// Register the onClick listener with the implementation above
button.setOnClickListener(mCorkyListener);
...
}
先new 一个匿名class,然后调用setOnClickListener 来设定event listner,这样当用户按button时就会触发mCorkyListener 中的onClick函数.
public class ExampleActivity extends Activity implements OnClickListener {
protected void onCreate(Bundle savedValues) {
...
Button button = (Button)findViewById(R.id.corky);
button.setOnClickListener(this);
}
// Implement the OnClickListener callback
public void onClick(View v) {
// do something when the button is clicked
}
...
}
也可以implement OnClickListener 然后调用setOnClickListener(this)的方式进行,效果和前一种的匿名clas实现是一样的.
Event Handlers:你可以定义一些默认的event handler。
onkeyDown(int,keyEvent):当一个新的key event产生时,被调用.
onKeyUp(int,keyEvent):key up 产生时
onTrackballEvent(MotionEvent):轨迹球移动事件产生时
onTouchEvent(MotionEvent):触摸屏幕时。
onFocusChange(boolean,int,Rect):view gains 或者失去焦点时.
下面这几个不是view class,但是可以直接影响你的handle event
Activity.dispatchTouchEvent(MotionEvent):在touch event被发送给window之前允许你的activity 和所有的touch event交互
ViewGroup.onInterceptTouchEvent(MotionEvent):允许event被发送给自view的同时允许viewgroup 查看eventViewParent.requestDisallowInterceptTouchEvent(boolean):不要和InterceptTouchEvent 交互.
相关文章推荐
- Angular2的input和output(原先的properties和events)
- Angular2的input和output(原先的properties和events)
- 关于Oozie的input-events和done-flag
- Android中的InputEventsr的简介(翻译自官方文档)——————个人笔记
- adb shell input events
- Android inject input events 注入Touch 点(x, y) 触摸输入事件
- Oozie的input-events和done-flag使用
- Native Client - Application - View Change, Focus, and Input Events
- How input events are dispatched in Android?
- Dev Guide/Framework Topics/User Interface/Input Events
- Understanding Android Input Touch Events System Framework (dispatchTouchEvent, onInterceptTouchEvent
- android异常:Consumer closed input channel or an error occurred. events
- #630 – PreviewTextInput 和TextInput 事件(PreviewTextInput and TextInput Events)
- [React Native] State and Touch Events -- TextInput, TouchableHighLight
- Angular2的input和output(原先的properties和events)
- Application.DoEvents() 处理队列消息,防界面假死
- 为何img、input等内联元素可以设置宽、高
- 吐槽一下测评网的笔试居然只支持 Python 2,害我在 input 上面搞了好久
- HTML<input>标签
- use expect to input password automatically