title: onDoubleTap not working in GestureDetector.SimpleOnGestureListener in CustomView
body: <blockquote>
    <p>I have created a Custom Button that work like ChatHead and also like to handle Single ,Double and LongPress on the custom Button. All other gesture working fine except onDoubleTap().</p>
  </blockquote>
  
  <p>I have created a customView all work is done in that class. But doubleTap not working . </p>
  
  <p><strong>CustomView</strong> </p>
  
  <pre><code>public class CustomButton extends ImageButton {
  
      private WindowManager mWindowManager;
      private WindowManager.LayoutParams params;
      private CustomButton mCustomButton;
  
      private Context mContext;
  
      private int initialX =0;
      private int initialY = 0;
      private float initialTouchX = 0 ;
      private float initialTouchY = 0;
  
      private GestureDetector gestureDetector;
      private OnMultiEventListener onMultiEventListener;
  
      public CustomButton(Context context) {
          super(context);
          initView(context);
      }
  
      public CustomButton(Context context, AttributeSet attrs) {
          super(context, attrs);
          initView(context);
      }
  
      public CustomButton(Context context, AttributeSet attrs, int defStyleAttr) {
          super(context, attrs, defStyleAttr);
          initView(context);
      }
  
      private void initView(Context context) {
          /*setBackgroundColor(Color.YELLOW);
          setImageResource(R.drawable.bg);*/
          mContext = context;
          mCustomButton = this;
          mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
          params = getBtnParams();
          gestureDetector = new GestureDetector(mContext, new SingleTapConfirm());
          /*setBackgroundColor(Color.RED);
          setTextColor(Color.WHITE);
          setText("Hud");*/
          mWindowManager.addView(mCustomButton,params);
          /*View view = LayoutInflater.from(context).inflate(R.layout.linear_assitive_button, null);
          addView(view);*/
      }
  
      public void setOnMultiEventListener(OnMultiEventListener onMultiEventListener) {
          this.onMultiEventListener = onMultiEventListener;
      }
  
      private WindowManager.LayoutParams getBtnParams() {
          WindowManager.LayoutParams btnParams = new WindowManager.LayoutParams(
                  android.view.ViewGroup.LayoutParams.WRAP_CONTENT,
                  android.view.ViewGroup.LayoutParams.WRAP_CONTENT,
                  WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
                  WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                          | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
                  PixelFormat.TRANSLUCENT);
          btnParams.gravity = Gravity.LEFT | Gravity.TOP;
          btnParams.x = 0;
          btnParams.y = 0;
          return btnParams;
      }
  
      public void removeFromWindowManager(){
          mWindowManager.removeView(mCustomButton);
      }
  
      // All event are handled drag, Single click ,Double and Long Pressed Too.
      @Override
      public boolean onTouchEvent(MotionEvent event) {
  
          if (gestureDetector.onTouchEvent(event)) {
              // single tap
              //Toast.makeText(mContext, "I am Signle Tap", Toast.LENGTH_SHORT).show();
              return true;
          } else {
              // Code for move and drag
  
              switch (event.getAction()) {
                  case MotionEvent.ACTION_DOWN:
                      initialX = params.x;
                      initialY = params.y;
                      initialTouchX = event.getRawX();
                      initialTouchY = event.getRawY();
                      return true;
                  case MotionEvent.ACTION_UP:
                      return true;
                  case MotionEvent.ACTION_MOVE:
                      params.x = initialX + (int) (event.getRawX() - initialTouchX);
                      params.y = initialY + (int) (event.getRawY() - initialTouchY);
                      mWindowManager.updateViewLayout(mCustomButton, params);
                      return true;
              }
          }
  
          return false;
      }
  
      private class SingleTapConfirm extends GestureDetector.SimpleOnGestureListener {
  
          @Override
          public boolean onSingleTapUp(MotionEvent e) {
  
              if(onMultiEventListener != null)
                  onMultiEventListener.onClick();
              //Toast.makeText(mContext,"Single Pressed",Toast.LENGTH_LONG).show();
              return true;// true means let this event be handle by others
              //return super.onSingleTapUp(e);
          }
  
          @Override
          public boolean onDoubleTap(MotionEvent e) {
              if(onMultiEventListener != null)
                  onMultiEventListener.onDoubleClick();
              //Toast.makeText(mContext,"Double Tap",Toast.LENGTH_LONG).show();
              return true;
              //return super.onDoubleTap(e);
          }
  
          @Override
          public void onLongPress(MotionEvent e) {
              super.onLongPress(e);
              if(onMultiEventListener != null)
                  onMultiEventListener.onLongPressed();
              //Toast.makeText(mContext,"Long Pressed",Toast.LENGTH_LONG).show();
          }
      }
  }
  </code></pre>