android 图片双击放大倍数的算法
Posted ljbguanli
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 图片双击放大倍数的算法相关的知识,希望对你有一定的参考价值。
为了避免图片放大过大。设置了一个放大倍数的最大限制SCALE_LIMIT,眼下该值为4.
详细算法例如以下所看到的:
图片的宽和高分别记为:imageW imageH
显示图片的view宽和高分别记为:viewW viewH
几个重要的比例记为:
scale_1 = viewW / imageW
scale_2 = viewH / imageH
scale_3 = viewW / imageH
scale_4 = viewH / imageW
假设当前图片的宽高比>2或者<0.5,则依照例如以下算法计算放大倍数zoomRate:
(1)当前scale = min(scale_1, scale_2)。
(2)zoomRate = min(max(scale_1, scale_2), max(scale_3, scale_4));
(3)假设zoomRate > SCALE_LIMIT,则zoomRate = SCALE_LIMIT;
(4)假设scale >= zoomRate,则保留(1)的结果从第(2)步又一次计算zoomRate值,否则跳至(6)
zoomRate = max(max(scale_1, scale_2), max(scale_3, scale_4));
(5)假设zoomRate > SCALE_LIMIT,则zoomRate = SCALE_LIMIT;
(6)此时zoomRate值即是图片应该放大的倍数。
假设当前图片的宽高比<=2或者>=0.5,则依照例如以下算法计算放大倍数zoomRate:
(1)当前scale = min(scale_1, scale_2)。
(2)largerInitRate = max(min(scale_1, scale_2), min(scale_3, scale_4));
(3)假设largerInitRate > SCALE_LIMIT,则largerInitRate = SCALE_LIMIT;
(4)zoomRate = min(scale_2, largerInitRate * 2.0f);
(5)假设zoomRate > SCALE_LIMIT。则zoomRate = SCALE_LIMIT;
(6)假设scale >= zoomRate,则保留前3步的结果,从第(4)步又一次计算zoomRate值,否则跳至(8)
zoomRate = largerInitRate * 2.0f;
(7)假设zoomRate > SCALE_LIMIT,则zoomRate = SCALE_LIMIT;
(8)此时zoomRate值即是图片应该放大的倍数。
以上是关于android 图片双击放大倍数的算法的主要内容,如果未能解决你的问题,请参考以下文章
android用 MPAndroidChart空间生成曲线,怎么更改初始放大倍数?初始刻度值?
Android------实现图片双击放大,缩小,左右滑动的多种方式
Android自定义ImageView实现图片缩放滑动,双击放大缩小,多点触控缩放
Android自定义ImageView实现图片缩放滑动,双击放大缩小,多点触控缩放