如何从另一个类调用invalidate()方法?

时间:2017-03-01 11:50:20

标签: android android-studio android-custom-view android-view-invalidate

我试图在我的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()方法呢?

1 个答案:

答案 0 :(得分:1)

invalidate()是View类的方法。因此,如果您想要在您的课程中调用它而未通过视图扩展,则必须传递您想要使其无效的视图。请遵循以下说明。

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

作为view.invalidate();