CustomView 覆盖 onTouch() 并通过 setOnTouchListener() 设置额外的 GestureDetector
CustomView overriding onTouch() and setting additional GestureDetector via setOnTouchListener()
是否可以创建自定义视图,既覆盖此自定义视图实现中的函数 onTouch()
,又允许通过 setOnTouchListener()
设置自定义 GestureDetector。
- 我想覆盖 onTouch() 方法以在视图中实现一些与触摸手势相关的绘图逻辑。
- 比我想使用这样的独立自定义视图附加到它的 GestureDetector 来检测和处理这个视图内部的一些自定义手势 Activity。
只有当我有 onTouch() 绘图实现,或者只有 setOnTouchListener() 来检测手势时,它才对我有用。也许我可以将这个手势检测放在视图中。但我更愿意将其作为单独的松耦合可重用组件,而不是紧密耦合的手势检测器。
你可以这样做:
public class CustomTouchView extends View {
private OnTouchListener onTouchListener;
public CustomTouchView(Context context) {
super(context);
}
@Override
public void setOnTouchListener(OnTouchListener l) {
super.setOnTouchListener(l);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (onTouchListener != null) {
return onTouchListener.onTouch(this, event);
} else {
return super.onTouchEvent(event);
}
// or implement your custom touch logic here
}
}
是否可以创建自定义视图,既覆盖此自定义视图实现中的函数 onTouch()
,又允许通过 setOnTouchListener()
设置自定义 GestureDetector。
- 我想覆盖 onTouch() 方法以在视图中实现一些与触摸手势相关的绘图逻辑。
- 比我想使用这样的独立自定义视图附加到它的 GestureDetector 来检测和处理这个视图内部的一些自定义手势 Activity。
只有当我有 onTouch() 绘图实现,或者只有 setOnTouchListener() 来检测手势时,它才对我有用。也许我可以将这个手势检测放在视图中。但我更愿意将其作为单独的松耦合可重用组件,而不是紧密耦合的手势检测器。
你可以这样做:
public class CustomTouchView extends View {
private OnTouchListener onTouchListener;
public CustomTouchView(Context context) {
super(context);
}
@Override
public void setOnTouchListener(OnTouchListener l) {
super.setOnTouchListener(l);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (onTouchListener != null) {
return onTouchListener.onTouch(this, event);
} else {
return super.onTouchEvent(event);
}
// or implement your custom touch logic here
}
}