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