0

我正在尝试在我的 Android 应用程序中的自定义视图上实现捏缩放功能。我已经使用以下课程来做到这一点。

public class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {

    public ScaleGestureDetector mScaleDetector;
    public float mScaleFactor = 1.f;

    public ScaleListener(){

    }

    @Override
    public boolean onScale(ScaleGestureDetector detector) {
        mScaleFactor *= detector.getScaleFactor();

        // Don't let the object get too small or too large.
        mScaleFactor = Math.max(0.1f, Math.min(mScaleFactor, 5.0f));

        invalidate(); //Error

        return true;
    }
}

我想在invalidate()内部调用上述方法,onScale但这是错误的,因为这在我的自定义视图之外。但是,我尝试通过在此处实例化自定义视图来做到这一点,如下所示。

View myview = new DrawingView();
myview.invalidate();

但是这个也返回一个错误。无法实例化我的自定义视图。那么如何在这里调用 invalidate() 方法呢?

4

1 回答 1

1

invalidate()是 View 类的方法。因此,如果您想在未由 View 扩展的类中调用它,则必须传递您想要使其无效的视图。按照以下说明进行操作。

首先使用 View 类public DrawingView view;在您的ScaleListener类中创建局部变量。然后在您的自定义视图中将您的类实例化为scale = new ScaleListener();. 然后您可以将视图传递为scale.view = this;. invalidate()现在你可以在你的类中调用方法view.invalidate();

于 2017-03-02T05:04:12.790 回答