Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 問題小結(14)-旋轉動畫Rotate

問題小結(14)-旋轉動畫Rotate

編輯:關於Android編程

項目需求,需要一個實現一個單幀的旋轉動畫,來提示當前進度,類似與圓圈型的progressbar。

首先定義anim文件:

[html]
<rotate  
        android:interpolator="@android:anim/linear_interpolator" 
         
        android:fromDegrees="0"  
        android:toDegrees="+359" 
                 
        android:pivotX="50%"  
        android:pivotY="50%"      
        android:repeatMode="restart" 
        android:repeatCount="infinite" 
        android:duration="2000" /> 

<rotate
        android:interpolator="@android:anim/linear_interpolator"
       
        android:fromDegrees="0"
        android:toDegrees="+359"
               
        android:pivotX="50%"
        android:pivotY="50%"    
        android:repeatMode="restart"
        android:repeatCount="infinite"
        android:duration="2000" />
這就是以顯示的圖片問中心的無限旋轉動畫,然後對相應的組件使用該動畫:這時我們發現效果不是勻速旋轉,也就是說我們在xml裡定義的android:interpolator="@android:anim/linear_interpolator"沒有起到應有的作用,通過查找資料,發現該屬性需要在代碼裡設定才能達到效果,於是實驗了一下,發現確實如此,代碼如下:

my_rotate.xml文件如下:

[html] 
<rotate  
      
        android:fromDegrees="0"  
        android:toDegrees="+359" 
                 
        android:pivotX="50%"  
        android:pivotY="50%"      
        android:repeatMode="restart" 
        android:repeatCount="infinite" 
        android:duration="2000" /> 

<rotate
    
        android:fromDegrees="0"
        android:toDegrees="+359"
               
        android:pivotX="50%"
        android:pivotY="50%"    
        android:repeatMode="restart"
        android:repeatCount="infinite"
        android:duration="2000" />java代碼如下:

[java]
Animation anim = AnimationUtils.loadAnimation(this, R.anim.my_rotate);        
LinearInterpolator lir = new LinearInterpolator();   
anim.setInterpolator(lir);  
findViewById(R.id.test).startAnimation(anim);       

 Animation anim = AnimationUtils.loadAnimation(this, R.anim.my_rotate);      
 LinearInterpolator lir = new LinearInterpolator(); 
 anim.setInterpolator(lir);
 findViewById(R.id.test).startAnimation(anim);     
這時新問題又出現了,這個動畫效果應因為定義的是無限循環的,當我們作為圓形的progressbar使用時沒法停止該動畫效果,即使我們在符合觸發條件時把相應的控件設置為不可見,其動畫效果依然在屏幕上旋轉,該怎麼辦呢?

同樣通過百度,我們發現android提供了一個clearAnimation()方法,用於動畫的清除,這時在滿足我們的progressbar停止條件時,我們讓相應控件調用clearAnimation()方法,然後在將其設置為不可見就實現了類progressbar效果。

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved