歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android動畫效果Animation之Tween實現簡單動畫

1、Android 平台提供了兩類動畫,一類是 Tween 動畫,即通過對場景裡的對象不斷做圖像變換 ( 平移、縮放、旋轉 ) 產生動畫效果;第二類是 Frame 動畫,即順序播放事先做好的圖像,跟電影類似。我們先介紹Tween來實現簡單的動畫;

2、首先看效果圖


        

在項目res文件夾下建一個anim文件夾裡建一個tween.xml文件:

[html]
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <set xmlns:android="http://schemas.android.com/apk/res/android" >  
  3.   
  4.     <alpha  
  5.         android:duration="5000"  
  6.         android:fromAlpha="0"  
  7.         android:toAlpha="1.0" />  
  8.     <!--  
  9.         透明度控制動畫效果 alpha  
  10.         浮點型值:  
  11.             fromAlpha 屬性為動畫起始時透明度  
  12.             toAlpha   屬性為動畫結束時透明度  
  13.             說明:   
  14.                 0.0表示完全透明  
  15.                 1.0表示完全不透明  
  16.             以上值取0.0-1.0之間的float數據類型的數字  
  17.           
  18.         長整型值:  
  19.             duration  屬性為動畫持續時間  
  20.             說明:       
  21.                 時間以毫秒為單位  
  22.   
  23.     -->  
  24.   
  25.     <rotate  
  26.         android:duration="5000"  
  27.         android:fromDegrees="0"  
  28.         android:pivotX="50%"  
  29.         android:pivotY="50%"  
  30.         android:toDegrees="1080" />  
  31.     <!--  
  32.        rotate 旋轉動畫效果     
  33.        浮點數型值:  
  34.             fromDegrees 屬性為動畫起始時物件的角度      
  35.             toDegrees   屬性為動畫結束時物件旋轉的角度 可以大於360度     
  36.   
  37.             說明:  
  38.                      當角度為負數——表示逆時針旋轉  
  39.                      當角度為正數——表示順時針旋轉                
  40.                      (負數from——to正數:順時針旋轉)     
  41.                      (負數from——to負數:逆時針旋轉)   
  42.                      (正數from——to正數:順時針旋轉)   
  43.                      (正數from——to負數:逆時針旋轉)         
  44.   
  45.             pivotX     屬性為動畫相對於物件的X坐標的開始位置  
  46.             pivotY     屬性為動畫相對於物件的Y坐標的開始位置  
  47.                   
  48.             說明:        以上兩個屬性值 從0%-100%中取值  
  49.                          50%為物件的X或Y方向坐標上的中點位置  
  50.   
  51.         長整型值:  
  52.             duration  屬性為動畫持續時間  
  53.             說明:       時間以毫秒為單位  
  54.   
  55.     -->  
  56.   
  57.     <scale  
  58.         android:duration="5000"  
  59.         android:fromXScale="0.1"  
  60.         android:fromYScale="0.1"  
  61.         android:pivotX="50%"  
  62.         android:pivotY="50%"  
  63.         android:toXScale="3.0"  
  64.         android:toYScale="3.0" />  
  65.     <!--  
  66.       尺寸伸縮動畫效果 scale  
  67.         
  68.       浮點型值:  
  69.            
  70.             fromXScale 屬性為動畫起始時 X坐標上的伸縮尺寸      
  71.             toXScale   屬性為動畫結束時 X坐標上的伸縮尺寸       
  72.           
  73.             fromYScale 屬性為動畫起始時Y坐標上的伸縮尺寸      
  74.             toYScale   屬性為動畫結束時Y坐標上的伸縮尺寸      
  75.           
  76.             說明:  
  77.                  以上四種屬性值      
  78.       
  79.                     0.0表示收縮到沒有   
  80.                     1.0表示正常無伸縮       
  81.                     值小於1.0表示收縮    
  82.                     值大於1.0表示放大  
  83.           
  84.             pivotX     屬性為動畫相對於物件的X坐標的開始位置  
  85.             pivotY     屬性為動畫相對於物件的Y坐標的開始位置  
  86.           
  87.             說明:  
  88.                     以上兩個屬性值 從0%-100%中取值  
  89.                     50%為物件的X或Y方向坐標上的中點位置  
  90.           
  91.         長整型值:  
  92.             duration  屬性為動畫持續時間  
  93.             說明:   時間以毫秒為單位  
  94.   
  95.         布爾型值:  
  96.             fillAfter 屬性 當設置為true ,該動畫轉化在動畫結束後被應用  
  97.   
  98.     -->  
  99.   
  100.     <translate  
  101.         android:duration="5000"  
  102.         android:fromXDelta="-20"  
  103.         android:fromYDelta="-20"  
  104.         android:toXDelta="300"  
  105.         android:toYDelta="300" />  
  106.     <!--  
  107.          translate 位置轉移動畫效果  
  108.         整型值:  
  109.             fromXDelta 屬性為動畫起始時 X坐標上的位置      
  110.             toXDelta   屬性為動畫結束時 X坐標上的位置  
  111.             fromYDelta 屬性為動畫起始時 Y坐標上的位置  
  112.             toYDelta   屬性為動畫結束時 Y坐標上的位置  
  113.             注意:  
  114.                      沒有指定fromXType toXType fromYType toYType 時候,  
  115.                      默認是以自己為相對參照物               
  116.         長整型值:  
  117.             duration  屬性為動畫持續時間  
  118.             說明:   時間以毫秒為單位  
  119.   
  120.     -->  
  121.   
  122. </set>  

Android的animation由四種類型組成

alpha

漸變透明度動畫效果

scale

漸變尺寸伸縮動畫效果

translate

畫面轉換位置移動動畫效果

rotate

畫面轉移旋轉動畫效果


在main.xml文件中定義一個按鈕和一個ImageView:

[html]
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent"  
  5.     android:orientation="vertical"   
  6.     >  
  7.     <Button   
  8.         android:layout_width="wrap_content"  
  9.         android:layout_height="wrap_content"  
  10.         android:id="@+id/button"  
  11.         android:text="重播"/>  
  12.     <ImageView   
  13.         android:layout_width="wrap_content"  
  14.         android:layout_height="wrap_content"  
  15.         android:layout_gravity="center_vertical"  
  16.         android:src="@drawable/pic"  
  17.         android:id="@+id/image"/>  
  18.   
  19. </LinearLayout>  
button按鈕用來重播,imageView用來顯示那個動畫效果的!

最後是java代碼,MyAnimation.java:

[java]
  1. package cn.csdn.anim;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.view.View;  
  6. import android.view.View.OnClickListener;  
  7. import android.view.animation.Animation;  
  8. import android.view.animation.AnimationUtils;  
  9. import android.widget.Button;  
  10. import android.widget.ImageView;  
  11.   
  12. public class MyAnimation extends Activity implements OnClickListener {  
  13.     private ImageView image = null;  
  14.     private Button button = null;  
  15.     private Animation animation;  
  16.   
  17.     public void onCreate(Bundle savedInstanceState) {  
  18.         super.onCreate(savedInstanceState);  
  19.         setContentView(R.layout.main);  
  20.         init();  
  21.     }  
  22.   
  23.     private void init() {  
  24.         image = (ImageView) this.findViewById(R.id.image);  
  25.         button = (Button) findViewById(R.id.button);  
  26.         button.setOnClickListener(this);  
  27.         animation = AnimationUtils.loadAnimation(this, R.anim.tween);// 使用AnimationUtils類的靜態方法loadAnimation()來加載XML中的動畫XML文件   
  28.         image.startAnimation(animation);// 開始動畫播出   
  29.     }  
  30.   
  31.     @Override  
  32.     public void onClick(View v) {  
  33.         image.startAnimation(animation);// 開始動畫播出   
  34.     }  
  35. }  
是不是很簡單!!

alpha

漸變透明度動畫效果

scale

漸變尺寸伸縮動畫效果

translate

畫面轉換位置移動動畫效果

rotate

畫面轉移旋轉動畫效果


 

下一次講解怎麼用java代碼實現各種動畫效果! http://www.linuxidc.com/Linux/2012-01/51450.htm

Copyright © Linux教程網 All Rights Reserved