ScaleGestureDetector在两指距离过短时,缩放终止

问题描述

ScaleGestureDetector是用来帮助检测缩放事件的类,可以借助它来实现图片的放大缩小功能。
使用过程中发现,当执行缩小操作时,两指距离达到一定值后,缩放会被终止,也就是有个最小的检测阈值。

调查

经过调试,发现调用onScaleEnd方法的代码在这里:

if (!inAnchoredScaleMode() && mInProgress && (span < mMinSpan || configChanged)) {
    mListener.onScaleEnd(this);
    mInProgress = false;
    mInitialSpan = span;
}

span是当前两指的距离,mMinSpan就是这个距离阈值。当span,其他条件也满足时,就触发了onScaleEnd方法,缩放终止。

mMinSpan的取值:

mMinSpan = res.getDimensionPixelSize(
                    com.android.internal.R.dimen.config_minScalingSpan);

在sdk目录的⁨platforms⁩ ▸ ⁨android-26⁩ ▸ ⁨data⁩ ▸ ⁨res⁩⁩ ▸ values⁩ ▸ config.xml中可以找到这个值:

27mm

是一个固定27毫米的长度。

修改

如果觉得27毫米的长度有点大,可以通过反射修改这个值

你可能感兴趣的:(ScaleGestureDetector在两指距离过短时,缩放终止)