Input Events

来源:互联网 发布:电钢琴选购知乎 编辑:程序博客网 时间:2024/06/03 19:16
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 交互.
0 0
原创粉丝点击