2012-07-02 132 views
2

我正在android中製作虛擬車速表。 我使用RotateAnimation()旋轉速度計指針。旋轉圖像,並顯示旋轉角度

有什麼辦法在旋轉過程中獲得針的角度位置?也就是說,如果針從0度旋轉到360度,我想在動畫期間的每個點上顯示針角度。 我使用下面的代碼來執行動畫。

RotateAnimation rpmNeedleDeflection = new RotateAnimation(-32, 213, (float) 135, needle.getHeight()/2); 
rpmNeedleDeflection.setDuration(1500); 
rpmNeedleDeflection.setFillAfter(true); 
needle.startAnimation(rpmNeedleDeflection); 
needle.refreshDrawableState(); 

任何幫助,請... 在此先感謝。

回答

3

,你可以嘗試重寫applyTransformation

RotateAnimation rpmNeedleDeflection = new RotateAnimation(fromDegrees, toDegrees, ...){ 
       protected void applyTransformation(float interpolatedTime,Transformation t) { 
        float currentDegree = fromDegrees+(toDegrees-fromDegrees)*interpolatedTime; 
        super.applyTransformation(interpolatedTime, t); 
       }; 

      } 
+0

此代碼不能正常工作。針頭根本沒有偏轉。 – JiTHiN

+0

對不起,我錯過了一行,super.applyTransformation(interpolatedTime,t); –

+0

感謝哥們,它像魅力一樣工作。但是,一旦動畫完成,針就會回到原來的位置。我希望它留在那裏。有什麼方法可以解決它嗎? – JiTHiN

2

使用此代碼,以保持針的最終位置:

if(currentDegree==toDegrees) 
     { 
      needle.refreshDrawableState(); 
      RotateAnimation nrpmNeedleDeflection=new rotateAnimation(toDegrees,toDegrees...); 
      nrpmNeedleDeflection.setDuration(1); 
      nrpmNeedleDeflection.setFillAfter(true); 
      needle.startAnimation(nrpmNeedleDeflection); 
     }