我想创建一个有图像的画廊.
画廊中的图像应该是可缩放的并且可以改变.我可以缩小图像,但无法设置缩放限制,并防止图像从屏幕上移开.
我使用以下代码缩放图像:
http://code.google.com/p/4chan-image-browser/source/browse/src/se/robertfoss/MultiTouch/TouchImageView.java?spec=svnd3e623ddeb6f9e97d9eba2c7aaa7c4567a3822b5&r=d3e623ddeb6f9e97d9eba2c7aaa7c4567a3822b5
画廊中的图像应该是可缩放的并且可以改变.我可以缩小图像,但无法设置缩放限制,并防止图像从屏幕上移开.
我使用以下代码缩放图像:
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); } } ....