【发布时间】:2012-01-21 15:23:51
【问题描述】:
android 应用程序如何将事件与特定于哪个类和哪个方法的视图关联并输入事件?
【问题讨论】:
标签: android view touch-event
android 应用程序如何将事件与特定于哪个类和哪个方法的视图关联并输入事件?
【问题讨论】:
标签: android view touch-event
当屏幕被触摸时,MotionEvent 被调度到最顶层的 View(Activity 的内容视图)。内容视图然后对区域进行一些计算,并确定它是否具有能够接收 MotionEvent 的子级,并将 MotionEvent 通过onTouchEvent(MotionEvent) 传递给 MotionEvent 落入的视图。这在视图层次结构中重复,直到视图返回 true 或 MotionEvent 返回到顶层视图,此时它决定处理或丢弃它。
参考:
【讨论】:
它使用观察者/监听者模式。您实现特定的接口,然后向 Android 平台注册。这就是 Android 平台知道调用哪个类和调用哪个方法的方式。
由于我们使用接口作为媒介,所以Android平台知道调用哪些方法。该类是您提供的,可以通过创建匿名内部类或完整的类来提供。
例子:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// You code
}
});
现在 Android 将调用 View.OnClickListener 接口方法,并且您将类的实际实例作为参数传递。
【讨论】: