Как вызвать метод 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 ответ
invalidate()
это метод класса View. Поэтому, если вы хотите вызвать его в своем классе, который не был расширен с помощью View, вы должны передать свое представление, которое хотите аннулировать. Следуйте следующей инструкции.
Сначала создайте локальную переменную, используя класс View как public DrawingView view;
в вашем ScaleListener
учебный класс. Затем создайте экземпляр вашего класса в вашем пользовательском представлении как scale = new ScaleListener();
, Тогда вы можете передать вид как scale.view = this;
, Теперь вы можете позвонить invalidate()
метод в вашем классе как view.invalidate();