android – ImageView捏合缩放比例限制和平移界限

前端之家收集整理的这篇文章主要介绍了android – ImageView捏合缩放比例限制和平移界限前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想创建一个有图像的画廊.
画廊中的图像应该是可缩放的并且可以改变.我可以缩小图像,但无法设置缩放限制,并防止图像从屏幕上移开.
我使用以下代码缩放图像:
http://code.google.com/p/4chan-image-browser/source/browse/src/se/robertfoss/MultiTouch/TouchImageView.java?spec=svnd3e623ddeb6f9e97d9eba2c7aaa7c4567a3822b5&r=d3e623ddeb6f9e97d9eba2c7aaa7c4567a3822b5

第一种方法
我使用TouchImageView将图像提供给画廊,这样可以让我缩小变焦
无法滚动画廊.即我不能区分’单一标签事件’和’标签滚动事件’.

第二种方法
使用ImageView将图像提供给图库,如果用户点击任何图库项目,可以在TouchImageView中显示所选图像,用户可以在此缩放图像.但这也阻止我滚动画廊视图.还有如何在所选图像上设置缩放限制和平移界限?

解决方法

这固定了我的缩放限制问题.图像放大/缩小到限制后,它就会进一步停止.它也很顺利,没有滞后. 0.7和2.0是最小和最大缩放级别.
....
} else if (mode == ZOOM) {
    float[] f = new float[9];

    float newDist = spacing(event);
    if (newDist > 10f) {
            matrix.set(savedMatrix);
            float tScale = newDist / dist;
            matrix.postScale(tScale,tScale,mid.x,mid.y);
    }

    matrix.getValues(f);
    float scaleX = f[Matrix.MSCALE_X];
    float scaleY = f[Matrix.MSCALE_Y];

    if(scaleX <= 0.7f) {
            matrix.postScale((0.7f)/scaleX,(0.7f)/scaleY,mid.y);
    } else if(scaleX >= 2.5f) {
            matrix.postScale((2.5f)/scaleX,(2.5f)/scaleY,mid.y);
    }
}
....

猜你在找的Android相关文章