0

我想在我的Android應用程序的自定義視圖上實現捏縮放功能。我使用下面的課程來完成它。如何從另一個類中調用invalidate()方法?

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()方法?

+0

你可以在調用無效()函數。這個功能可以從類 –

+0

@AyushBansal之外無效您的視圖類創建一個功能,但這個問題是可以」 t在這裏實例化自定義視圖。 – isuru

+2

傳遞你想失效的視圖。 – m0skit0

回答

1

invalidate()是View類的方法。因此,如果你想在課堂內調用它,而不是由視圖擴展,你必須傳遞你想要失效的視圖。遵循以下說明。

首先在您的ScaleListener類中使用View類創建局部變量作爲public DrawingView view;。然後在您的自定義視圖中將您的課程實例化爲scale = new ScaleListener();。然後,您可以將視圖傳遞爲scale.view = this;。現在,您可以在類中調用invalidate()方法view.invalidate();

相關問題