Android-補間動畫效果

來源:互聯網
上載者:User

Android的SDK提供了三種類型的動畫,分別是補間動畫、逐幀動畫和插值屬性動畫。下面先介紹第一種動畫效果-補間動畫。

補間動畫可以應用於View,讓開發人員可以定義一些關於大小、位置、旋轉和透明度的改變效果,達到讓View的內容動起來的效果。

補間動畫是使用Animation類建立的,它有4個直接子類,分別實現不同的動畫效果,分別為:

AlphaAnimation 漸層透明度動畫效果,即淡入淡出效果
ScaleAnimation 漸層尺寸伸縮動畫效果,即縮放效果
TranslateAnimation 畫面轉換位置移動動畫效果,移動效果
RotateAnimation 畫面轉移旋轉動畫效果,即旋轉效果


要使用補間動畫的效果,有兩種方法,第一種是在XML檔案中設定動畫效果;第二種是在Java代碼中設定。下面分別介紹這兩種方法:

1.在XML檔案中設定方式:

在Android項目的res目錄下建立anim檔案夾,然後在anim檔案夾下建立firstanim.xml,添加動畫效果的配置代碼,範例程式碼如下:

[html]
<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
  <alpha 
    android:fromAlpha="0.1" 
    android:toAlpha="1.0" 
    android:duration="3000" 
    />  
<!-- 透明度控制動畫效果 alpha 
         
            fromAlpha 為動畫起始時透明度 
            toAlpha   為動畫結束時透明度 
            取值說明: 0.0表示完全透明,1.0表示完全不透明,以上值取0.0-1.0之間的float資料類型的數字 
 
            duration  為動畫期間,時間以毫秒為單位 
--> 
   
 
  <scale   
          android:interpolator= 
                     "@android:anim/accelerate_decelerate_interpolator" 
          android:fromXScale="0.0" 
          android:toXScale="1.4" 
          android:fromYScale="0.0" 
          android:toYScale="1.4" 
          android:pivotX="50%" 
          android:pivotY="50%" 
          android:fillAfter="false" 
          android:duration="700" /> 
 
<!-- 尺寸伸縮動畫效果 scale 
       interpolator 指定一個動畫的插入器 
         幾種簡單的動畫插入器: 
          accelerate_decelerate_interpolator  先加速後減速,開始結束時慢,中間加速             
    accelerate_interpolator        加速,開始時慢中間加速 
            decelerate_interpolator       減速,開始時快然後減速  
    LinearInterpolator        線性,線性均勻改變       
          
            fromXScale 為動畫起始時 X座標上的伸縮尺寸     
            toXScale   為動畫結束時 X座標上的伸縮尺寸      
         
            fromYScale 為動畫起始時Y座標上的伸縮尺寸     
            toYScale   為動畫結束時Y座標上的伸縮尺寸     
           以上四種屬性值說明:    
     
                    0.0表示收縮到沒有  
                    1.0表示正常無伸縮      
                    值小於1.0表示收縮   
                    值大於1.0表示放大 
         
            pivotX     為動畫相對於物件的X座標的開始位置 
            pivotY     為動畫相對於物件的Y座標的開始位置 
     以上兩個屬性值 從0%-100%中取值,50%為物件的X或Y方向座標上的中點位置 
 
            duration  為動畫期間,時間以毫秒為單位 
 
          fillAfter 當設定為true ,控制項停放在動畫結束的位置 
--> 
 
 
 
  <translate 
    android:fromXDelta="30" 
    android:toXDelta="-80" 
    android:fromYDelta="30" 
    android:toYDelta="300" 
    android:duration="2000" 
/> 
<!-- translate 位置轉移動畫效果 
            
    fromXDelta 為動畫起始時 X座標上的位置     
            toXDelta   為動畫結束時 X座標上的位置 
            fromYDelta 為動畫起始時 Y座標上的位置 
            toYDelta   為動畫結束時 Y座標上的位置 
           沒有指定fromXType toXType fromYType toYType 時候,預設是以自己為相對參照物              
 
            duration  動畫期間,時間以毫秒為單位 
--> 
 
 
  <rotate  
        android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
        android:fromDegrees="0"  
        android:toDegrees="+350"          
        android:pivotX="50%"  
        android:pivotY="50%"      
        android:duration="3000" />   
<!-- rotate 旋轉動畫效果 
       interpolator 指定一個動畫的插入器 
      fromDegrees 為動畫起始時控制項的角度     
       toDegrees   為動畫結束時物件旋轉的角度 可以大於360度    
      當角度為負數——表示逆時針旋轉 
       當角度為正數——表示順時針旋轉               
       負數from——to正數:順時針旋轉)    
      (負數from——to負數:逆時針旋轉)  
      (正數from——to正數:順時針旋轉)  
      (正數from——to負數:逆時針旋轉)        
 
       pivotX    為動畫相對於物件的X座標的開始位置 
        pivotY    為動畫相對於物件的Y座標的開始位置 
       以上兩個屬性值 從0%-100%中取值 
       duration  為動畫期間,時間以毫秒為單位 
--> 
</set> 

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
  <alpha
 android:fromAlpha="0.1"
 android:toAlpha="1.0"
 android:duration="3000"
 />
<!-- 透明度控制動畫效果 alpha
       
            fromAlpha 為動畫起始時透明度
            toAlpha   為動畫結束時透明度
            取值說明: 0.0表示完全透明,1.0表示完全不透明,以上值取0.0-1.0之間的float資料類型的數字

            duration  為動畫期間,時間以毫秒為單位
-->
 

  <scale 
          android:interpolator=
                     "@android:anim/accelerate_decelerate_interpolator"
          android:fromXScale="0.0"
          android:toXScale="1.4"
          android:fromYScale="0.0"
          android:toYScale="1.4"
          android:pivotX="50%"
          android:pivotY="50%"
          android:fillAfter="false"
          android:duration="700" />

<!-- 尺寸伸縮動畫效果 scale
       interpolator 指定一個動畫的插入器
         幾種簡單的動畫插入器:
          accelerate_decelerate_interpolator  先加速後減速,開始結束時慢,中間加速           
 accelerate_interpolator        加速,開始時慢中間加速
            decelerate_interpolator       減速,開始時快然後減速
 LinearInterpolator        線性,線性均勻改變     
        
            fromXScale 為動畫起始時 X座標上的伸縮尺寸   
            toXScale   為動畫結束時 X座標上的伸縮尺寸    
       
            fromYScale 為動畫起始時Y座標上的伸縮尺寸   
            toYScale   為動畫結束時Y座標上的伸縮尺寸   
           以上四種屬性值說明:  
   
                    0.0表示收縮到沒有
                    1.0表示正常無伸縮    
                    值小於1.0表示收縮 
                    值大於1.0表示放大
       
            pivotX     為動畫相對於物件的X座標的開始位置
            pivotY     為動畫相對於物件的Y座標的開始位置
  以上兩個屬性值 從0%-100%中取值,50%為物件的X或Y方向座標上的中點位置

            duration  為動畫期間,時間以毫秒為單位

          fillAfter 當設定為true ,控制項停放在動畫結束的位置
-->

 

  <translate
 android:fromXDelta="30"
 android:toXDelta="-80"
 android:fromYDelta="30"
 android:toYDelta="300"
 android:duration="2000"
/>
<!-- translate 位置轉移動畫效果
          
 fromXDelta 為動畫起始時 X座標上的位置   
            toXDelta   為動畫結束時 X座標上的位置
            fromYDelta 為動畫起始時 Y座標上的位置
            toYDelta   為動畫結束時 Y座標上的位置
           沒有指定fromXType toXType fromYType toYType 時候,預設是以自己為相對參照物            

            duration  動畫期間,時間以毫秒為單位
-->


  <rotate
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromDegrees="0"
        android:toDegrees="+350"        
        android:pivotX="50%"
        android:pivotY="50%"    
        android:duration="3000" /> 
<!-- rotate 旋轉動畫效果
       interpolator 指定一個動畫的插入器
      fromDegrees 為動畫起始時控制項的角度   
       toDegrees   為動畫結束時物件旋轉的角度 可以大於360度  
      當角度為負數——表示逆時針旋轉
       當角度為正數——表示順時針旋轉             
       負數from——to正數:順時針旋轉)  
      (負數from——to負數:逆時針旋轉)
      (正數from——to正數:順時針旋轉)
      (正數from——to負數:逆時針旋轉)      

       pivotX    為動畫相對於物件的X座標的開始位置
        pivotY    為動畫相對於物件的Y座標的開始位置
       以上兩個屬性值 從0%-100%中取值
       duration  為動畫期間,時間以毫秒為單位
-->
</set>

 

在Activity中的onCreate()方法中,擷取在XML中配置的動畫效果,代碼如下:

[java]
Animation animation= AnimationUtils.loadAnimation(this,R.anim.firstanim); 

Animation animation= AnimationUtils.loadAnimation(this,R.anim.firstanim);
如果這個動畫效果使用在一個ImageView上,可以參考如下代碼:

[java]
imageView.startAnimation(animation); 

imageView.startAnimation(animation);2.在Java代碼中設定方式:

以AlphaAnimation為例,

[java]
//首先聲明Animation的一個對象  
private Animation alpha; 
 
 
 //在Activity的onCreate()方法中執行個體化這個對象  
alpha=new AlphaAnimation(0.1f, 1.0f); 
 
 
 
//設定動畫期間為3秒  
 
alpha.setDuration(3000); 

//首先聲明Animation的一個對象
private Animation alpha;


 //在Activity的onCreate()方法中執行個體化這個對象
alpha=new AlphaAnimation(0.1f, 1.0f);

 

//設定動畫期間為3秒

alpha.setDuration(3000);

如果這個動畫效果使用在一個ImageView上,可以參考如下代碼:

[java]
imageView.startAnimation(alpha); 

imageView.startAnimation(alpha);

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.