code: public void zoomToPoint(
        float scale,
        PointF imagePoint,
        PointF viewPoint,
        @LimitFlag int limitFlags,
        long durationMs,
        @Nullable Runnable onAnimationComplete) {
      FLog.v(getLogTag(), "zoomToPoint: duration %d ms", durationMs);
      calculateZoomToPointTransform(
          mNewTransform,
          scale,
          imagePoint,
          viewPoint,
          limitFlags);
      setTransform(mNewTransform, durationMs, onAnimationComplete);
    }
docs: Zooms to the desired scale and positions the image so that the given image point corresponds
  to the given view point.
  
  <p>If this method is called while an animation or gesture is already in progress,
  the current animation or gesture will be stopped first.
  
  @param scale desired scale, will be limited to {min, max} scale factor
  @param imagePoint 2D point in image's relative coordinate system (i.e. 0 <= x, y <= 1)
  @param viewPoint 2D point in view's absolute coordinate system
  @param limitFlags whether to limit translation and/or scale.
  @param durationMs length of animation of the zoom, or 0 if no animation desired
  @param onAnimationComplete code to run when the animation completes. Ignored if durationMs=0