Android Gallery2 修改双击、手势放大的最大倍数

Gallery2,android原生的图库
图库中图片缩放有两种方式:1.双击放大,2.双指手势放大。
下面说一下修改这里的最大放大倍数。
例子是:修改放大倍数为3倍,照片放到最大后的伸缩范围0.5。

分开两种情况:截图和照片。这两种是不同的缩放倍数,需要两个都进行修改。

截图

packages/apps/Gallery2/src/com/android/gallery3d/ui/PhotoView.java

public class PhotoView extends GLView implements PlayEngine.OnFrameAvailableListener {
    //省略代码
        @Override
        public boolean onDoubleTap(float x, float y) {
            if (mIgnoreScalingGesture) return true;
            if (mIgnoreSwipingGesture) return true;
            if (mPictures.get(0).isCamera()) return false;
            PositionController controller = mPositionController;
            float scale = controller.getImageScale();
            // onDoubleTap happened on the second ACTION_DOWN.
            // We need to ignore the next UP event.
            mIgnoreUpEvent = true;
            if (scale <= .75f || controller.isAtMinimalScale()) {
                /// M: [BUG.MODIFY] A black area show at the right side of picture.@{
                /* controller.zoomIn(x, y, Math.max(1.0f, scale * 1.5f)); */
                //modified by xx start
                //1.5最小放大倍数为1.5倍
                //scale * 1.5 这是当前获取到,按照大约是1.5倍进行放大,scale的值接近1。4.0f限制的最大放大倍数。
                //controller.zoomIn(x, y, Math.max(1.5f, Math.min(scale * 1.5f, 4.0f)));
                //这里修改为最大放大倍数为3倍,双击、手势都是3倍。
                controller.zoomIn(x, y, Math.max(1.5f, Math.min(scale * 3f, 3.0f)));
                //modified by xx end
                /// @}
            } else {
                controller.resetToFullView();
            }
            return true;
        }
    }
}

照片

照片的需要修改两个地方,一个是配置最大的放大倍数,另外一个是放大到了最大倍数的数据,手势进行再放大的时候,有一个伸缩的范围,放开,就恢复成最大放大倍数。
packages/apps/Gallery2/src/com/android/gallery3d/ui/PositionController.java


public class PositionController {

    // We try to scale up the image to fill the screen. But in order not to
    // scale too much for small icons, we limit the max up-scaling factor here.
    private static final float SCALE_LIMIT = 3;//最大放大倍数的配置,设置为3倍


    private float getMaximalScale(Box b) {
        if (mFilmMode) return getMinimalScale(b);
        if (mConstrained && !mConstrainedFrame.isEmpty()) return getMinimalScale(b);
        return 0.5f;//配置放大最大倍数后,手势再拉伸的放大倍数,倍数为0.5
    }
}

就修改上面三个地方就可以了,由于之前在网上找不到具体的修改方式,这一部分也是刚刚接触,看以前的人修改,修改了很多个地方,都不知道哪个是哪个,都不知道是不是瞎改...
跟着瞎改是一件很难受的事,所以还是先理清,再进行准确的修改,这个也便于自己的提升吧。
谢谢。

你可能感兴趣的:(Android Gallery2 修改双击、手势放大的最大倍数)