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 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,436评论 25 708
  • 我怀念的……1.益友 我们仿佛在一个诺大的森林里行走着。白天时看路,候鸟掠过头顶,习风拂过清凉。夜晚时看树,...
    七月与安然阅读 461评论 1 3
  • 看到这个题目,我立刻想到在2002年11月遇到的第一位贵人,就是我的直接上级,此后的职业生涯发展两次重大提...
    幸运的老师阅读 179评论 0 0
  • 给我精力,如果没有人阻止,我会一直写 每次一拿起笔就不知道做什么好了。 想起来了。在2010年的时候我用金色笔在本...
    宣守阅读 269评论 1 2
  • 真想找一份工作,随心所欲的看书,听歌。埋藏在书里的世界,在音乐里的世界,那是多么幸福。 真想找一份工作,不为金钱而...
    师奶仔阅读 167评论 0 0