当图片处于浏览时,GestureDetector处于监听状态,双击图片,通过getSelectedView获取当前图片,以双击点缩放图片,缩小状态下,判断图片适应屏幕比例,当比例大于0.5f,设置缩放比例为2.0f,否则,设置图片比例缩放比例为1.0f。调用BasaImageView的zoomTo方法。放大状态下,设置缩放比例为图片适应屏幕比例,调用zoomTo方法。
代码如下:
public boolean onDoubleTap(MotionEvent e) {
View view = MyGallery.this.getSelectedView();
float originalScl = imageView.getScale();
float scl = 1.0f / originalScl;
if (view instanceof BasalImageView) {
imageView = (BasalImageView) view;
if (imageView.getScale() > imageView.getScaleRate()) {
imageView.zoomTo(imageView.getScaleRate(), GalleryViewActivity.screenWidth / 2, GalleryViewActivity.screenHeight / 2, 200f);
}else {
if (imageView.getScaleRate() > 0.5f) {
imageView.zoomTo(2.0f, e.getX(), e.getY());
}else {
imageView.zoomTo(originalScl * scl, e.getX(), e.getY());
}
}
}
return true;
}
}
图 3自适应屏幕尺寸和双击放大
(3) 双指滑动缩放图片
两根手指落下屏幕上之间的距离为基础值,滑动手指,滑动后手指之间的距离除以开始落下的距离的系数为缩放比例,正值为放大图片,负值为缩小图片。调用zoomTo方法。图片缩放参考点为落下的两根手指点对应的中间点。缩放后,滑动后的距离值赋给基础值,以此类推,当手指再次滑动时,将产生新的滑动后的手指间距,除以新的基础值,得到缩放比例。
代码如下:
public boolean onTouch(View v, MotionEvent event) {
View view = MyGallery.this.getSelectedView();
if (view instanceof BasalImageView) {
imageView = (BasalImageView) view;
if (event.getAction() == MotionEvent.ACTION_DOWN) {
baseValue = 0;
originalScale = imageView.getScale(); Android平台手机图片浏览软件的开发实现(13):http://www.youerw.com/jisuanji/lunwen_2019.html