下面是为一个按钮设置监听器的例子:
// 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);
...
}
}
下面这个列子我们会发现用Activity去实现OnClickListener接口,并作为它的一部分,会更方便,而不必去加载额外的类和对象
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
}
...
}
这里注意一下,以上的例子可以看出onClick()是没有返回值的,但是有些事件处理方法是必须带返回值,它取决于的具体的事件,有些那么做的原因,看下面的例子:
onLongClick()
它返回的布尔值表明你已经完成了这个事件的处理,还是应该把它继续传下去。返回true表明已经处理完成并且停止了传递,如果返回为false表明事件还没有完成,或者它还需要继续被传递给其他的监听器
onKey()
它返回的布尔值表明你已经完成了这个事件的处理,还是应该把它继续传下去。返回true表明已经处理完成并且停止了传递,如果返回为false表明事件还没有完成,或者它还需要继续被传递给其他的监听器
onTouch()
它返回的布尔值表明你是否已经完成了这次事件的行动,重要的是后面可能还有很多后续的行动,这样,如果你返回false,表明在接到下一次的后续行动中,你还没有完成之前行为也没有意向去处理随后的行动,因此,在这个事件的后续行动中将不会再被调用。 如fingure手势,或最终行动事件
记住:我们所关注的事件肯定是发生在高亮聚集的焦点,它从总视图(顶级的)被一级一级的向下传递,直到我们想要关注的组件,当焦点聚集在这个视图(或视图中的子视图)时 ,你能够使用dispatchKeyEvent() 作为一种代替方法,来捕获在视图上的按键事件,你还可以使用onKeyDown()和onKeyUp().来捕获所有事件内的交互活动