视图的onTouchEvent
:
public class MyCustomView extends View {
// THIS :
@Override
public boolean onTouchEvent(MotionEvent event) {
return super.onTouchEvent(event);
}
}
及其onTouchListener
:
MyCustomView myView = (MyCustomView) findViewById(R.id.customview);
myView.setOnTouchListener(new View.OnTouchListener() {
@Override
public void onClick(View arg0) {
// do something
}
});
或 的
public class MyCustomView extends View {
public MyCustomView(Context context, AttributeSet attrs) {
// THIS :
setOnTouchListener(new View.OnTouchListener() {
@Override
public void onClick(View arg0) {
// do something
}
});
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return super.onTouchEvent(event);
}
}
如果这两者不同,
我们需要同时实施吗?
首先调用哪一个?
如果我有一些滚动和缩放功能,我应该在onTouchEvent
或onTouchListener
内实施吗?
答案 0 :(得分:11)
LeeYiHong的回答是正确的,另一个非常重要的是http://developer.android.com/reference/android/view/View.OnTouchListener.html写的:
在向视图提供触摸事件
[i.e. View.OnTouchListener -> onTouch(View v, MotionEvent event)]
之前,将调用回调[i.e. onTouchEvent(MotionEvent)]
。
答案 1 :(得分:1)
我不确定你是否找到了答案。但我发现相似的questions与你的相似。
“只要你声明了接口并将Listener放在了正确的位置,onTouch可以在你想要的任何地方工作(无论是在活动中还是在视图中)!另一方面,onTouchEvent只能在View中运行!”
对于滚动和缩放功能,我猜onTouchListener足以完成这两个功能(更像旋转等)。