CustomView重写onTouch()并通过setOnTouchListener()设置其他GestureDetector

时间:2017-08-29 12:05:02

标签: android android-custom-view gesturedetector

是否可以创建自定义视图,在自定义视图实现中覆盖函数onTouch(),并允许通过setOnTouchListener()设置自定义GestureDetector。

  1. 我想覆盖onTouch()方法,在View中与触摸手势相关的一些绘图逻辑。
  2. 比我想使用这种自包含的自定义视图附加到它GestureDetector来检测和处理Activity中此视图上的一些自定义手势。
  3. 只有我有onTouch()绘图实现,或者只有setOnTouchListener()来检测手势时,它才适用于我。也许我可以将这个手势检测放在视图中。但我更愿意将其作为单独的松散耦合可重用组件,而不是紧密耦合的手势检测器。

1 个答案:

答案 0 :(得分:1)

你可以这样想:

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 
    }
}