问题描述
ScaleGestureDetector是用来帮助检测缩放事件的类,可以借助它来实现图片的放大缩小功能。
使用过程中发现,当执行缩小操作时,两指距离达到一定值后,缩放会被终止,也就是有个最小的检测阈值。
调查
经过调试,发现调用onScaleEnd方法的代码在这里:
if (!inAnchoredScaleMode() && mInProgress && (span < mMinSpan || configChanged)) {
mListener.onScaleEnd(this);
mInProgress = false;
mInitialSpan = span;
}
span是当前两指的距离,mMinSpan就是这个距离阈值。当span<mMinSpan
,其他条件也满足时,就触发了onScaleEnd方法,缩放终止。
mMinSpan的取值:
mMinSpan = res.getDimensionPixelSize(
com.android.internal.R.dimen.config_minScalingSpan);
在sdk目录的platforms ▸ android-26 ▸ data ▸ res ▸ values ▸ config.xml
中可以找到这个值:
<dimen name="config_minScalingSpan">27mm</dimen>
是一个固定27毫米的长度。
修改
如果觉得27毫米的长度有点大,可以通过反射修改这个值
网友评论