使用尺度手势缩放位图(水平或垂直)



我想使用刻度手势在水平或垂直上缩放帆布。我尝试了样本,但它们保持纵横比。但是我只想垂直缩放或水平缩放。

我已经以某种方式解决了我的问题。这是Iam在做什么。如果有人有更好的解决方案,请告诉我。 谢谢

私有类ScaleListener扩展了Scale gesteMesureDetector.simpleonscalesturelisteristener {

    @Override
    public boolean onScale(ScaleGestureDetector detector) {
        float xScale = detector.getCurrentSpanX() / detector.getPreviousSpanX();
        float yScale = detector.getCurrentSpanY() / detector.getPreviousSpanY();
        float diffSpanX = detector.getCurrentSpan() - detector.getPreviousSpanX();
        float diffSpanY = detector.getCurrentSpan() - detector.getPreviousSpanY();
        /**
         * Ignore scaleX
         */
        if (diffSpanX > diffSpanY) {
            scaleFactorY *= yScale;
            scaleFactorY = Math.max(0.1f, Math.min(scaleFactorY, 5.0f));
        } else {
            scaleFactorX *= xScale;
            scaleFactorX = Math.max(0.1f, Math.min(scaleFactorX, 5.0f));
        }
        update(scaleFactorX, scaleFactorY);
        return true;
    }
}