public void setTransform(
      Matrix newTransform, long durationMs, @Nullable Runnable onAnimationComplete) {
    FLog.v(getLogTag(), "setTransform: duration %d ms", durationMs);
    if (durationMs <= 0) {
      setTransformImmediate(newTransform);
    } else {
      setTransformAnimated(newTransform, durationMs, onAnimationComplete);
    }
  }
Sets a new zoomable transformation and animates to it if desired.

<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 newTransform new transform to make active
@param durationMs duration of the animation, or 0 to not animate
@param onAnimationComplete code to run when the animation completes. Ignored if durationMs=0
samples/zoomable/src/main/java/com/facebook/samples/zoomable/AbstractAnimatedZoomableController.java