@Override
  public boolean onTouchEvent(MotionEvent event) {
    int a = event.getActionMasked();
    FLog.v(getLogTag(), "onTouchEvent: %d, view %x, received", a, this.hashCode());
    if (!mIsDialtoneEnabled && mTapGestureDetector.onTouchEvent(event)) {
      FLog.v(
          getLogTag(),
          "onTouchEvent: %d, view %x, handled by tap gesture detector",
          a,
          this.hashCode());
      return true;
    }

    if (!mIsDialtoneEnabled && mZoomableController.onTouchEvent(event)) {
      FLog.v(
          getLogTag(),
          "onTouchEvent: %d, view %x, handled by zoomable controller",
          a,
          this.hashCode());
      if (!mAllowTouchInterceptionWhileZoomed && !mZoomableController.isIdentity()) {
        getParent().requestDisallowInterceptTouchEvent(true);
      }
      return true;
    }
    if (super.onTouchEvent(event)) {
      FLog.v(getLogTag(), "onTouchEvent: %d, view %x, handled by the super", a, this.hashCode());
      return true;
    }
    // None of our components reported that they handled the touch event. Upon returning false
    // from this method, our parent won't send us any more events for this gesture. Unfortunately,
    // some components may have started a delayed action, such as a long-press timer, and since we
    // won't receive an ACTION_UP that would cancel that timer, a false event may be triggered.
    // To prevent that we explicitly send one last cancel event when returning false.
    MotionEvent cancelEvent = MotionEvent.obtain(event);
    cancelEvent.setAction(MotionEvent.ACTION_CANCEL);
    mTapGestureDetector.onTouchEvent(cancelEvent);
    mZoomableController.onTouchEvent(cancelEvent);
    cancelEvent.recycle();
    return false;
  }
Sets the controllers for the normal and huge image.

<p>The huge image controller is used after the image gets scaled above a certain threshold.

<p>IMPORTANT: in order to avoid a flicker when switching to the huge image, the huge image
controller should have the normal-image-uri set as its low-res-uri.

@param controller controller to be initially used
@param hugeImageController controller to be used after the client starts zooming-in
samples/zoomable/src/main/java/com/facebook/samples/zoomable/ZoomableDraweeView.java