Android图形与图像处理-补间动画


Android图形与图像处理-补间动画

创建项目:TweenAnim

项目运行效果:

  

 

项目代码:

动画资源文件:两个动画资源文件

anim.xml

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <!-- 指定动画匀速改变 -->  
  3. <set xmlns:android="http://schemas.android.com/apk/res/android"  
  4.     android:interpolator="@android:anim/linear_interpolator">  
  5.     <!-- 定义缩放变换 -->  
  6.     <scale android:fromXScale="1.0"  
  7.         android:toXScale="0.01"  
  8.         android:fromYScale="1.0"  
  9.         android:toYScale="0.01"  
  10.         android:pivotX="50%"  
  11.         android:pivotY="50%"  
  12.         android:fillAfter="true"  
  13.         android:duration="3000"/>  
  14.     <!-- 定义透明度的变换 -->  
  15.     <alpha   
  16.         android:fromAlpha="1"  
  17.         android:toAlpha="0.05"  
  18.         android:duration="3000"  
  19.         />  
  20.     <!-- 定义旋转变换 -->  
  21.     <rotate   
  22.         android:fromDegrees="0"  
  23.         android:toDegrees="1800"  
  24.         android:pivotX="50%"  
  25.         android:pivotY="50%"  
  26.         android:duration="3000"/>  
  27. </set>  

reverse.xml

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <!-- 指定动画匀速改变 -->  
  3. <set xmlns:android="http://schemas.android.com/apk/res/android"  
  4.     android:interpolator="@android:anim/linear_interpolator"  
  5.     android:startOffset="3000">  
  6.     <!-- 定义缩放变换 -->  
  7.     <scale android:fromXScale="0.01"  
  8.         android:toXScale="1"  
  9.         android:fromYScale="0.01"  
  10.         android:toYScale="1"  
  11.         android:pivotX="50%"  
  12.         android:pivotY="50%"  
  13.         android:fillAfter="true"  
  14.         android:duration="3000"  
  15.         />  
  16.     <!-- 定义透明度的变换 -->  
  17.     <alpha   
  18.         android:fromAlpha="0.05"  
  19.         android:toAlpha="1"  
  20.         android:duration="3000"  
  21.         />  
  22.     <!-- 定义旋转变换 -->  
  23.     <rotate   
  24.         android:fromDegrees="1800"  
  25.         android:toDegrees="0"  
  26.         android:pivotX="50%"  
  27.         android:pivotY="50%"  
  28.         android:duration="3000"  
  29.         />  
  30. </set>  

布局文件:main.xml

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:id="@+id/LinearLayout1"  
  4.     android:layout_width="match_parent"  
  5.     android:layout_height="match_parent"  
  6.     android:orientation="vertical"  
  7.     android:gravity="center_horizontal" >  
  8.     <Button   
  9.         android:id="@+id/bn"  
  10.         android:layout_width="wrap_content"  
  11.         android:layout_height="wrap_content"  
  12.         android:text="播放动画"  
  13.         />  
  14.     <ImageView  
  15.         android:id="@+id/flower"  
  16.         android:layout_width="wrap_content"  
  17.         android:layout_height="wrap_content"  
  18.         android:src="@drawable/flower"  
  19.         />  
  20.   
  21. </LinearLayout>  
TweenAnim.java
  1. package wwj.tweenanim;  
  2.   
  3. import java.util.Timer;  
  4. import java.util.TimerTask;  
  5.   
  6. import android.app.Activity;  
  7. import android.os.Bundle;  
  8. import android.os.Handler;  
  9. import android.view.View;  
  10. import android.view.View.OnClickListener;  
  11. import android.view.animation.Animation;  
  12. import android.view.animation.AnimationUtils;  
  13. import android.widget.Button;  
  14. import android.widget.ImageView;  
  15.   
  16. public class TweenAnim extends Activity {  
  17.   
  18.     @Override  
  19.     public void onCreate(Bundle savedInstanceState) {  
  20.         super.onCreate(savedInstanceState);  
  21.         setContentView(R.layout.main);  
  22.         final ImageView flower = (ImageView)findViewById(R.id.flower);  
  23.         //加载第一份动画资源   
  24.         final Animation anim = AnimationUtils.loadAnimation(this, R.anim.anim);  
  25.         //设置动画结束后保留结束状态   
  26.         anim.setFillAfter(true);  
  27.         //加载第二份动画资源   
  28.         final Animation reverse = AnimationUtils.loadAnimation(this, R.anim.reverse);  
  29.         //设置动画结束后保留结束状态   
  30.         reverse.setFillAfter(true);  
  31.         Button bn = (Button)findViewById(R.id.bn);  
  32.         final Handler handler = new Handler(){  
  33.             public void handleMessage(android.os.Message msg) {  
  34.                 if(msg.what == 0x123){  
  35.                     flower.startAnimation(reverse);  
  36.                 }  
  37.             };  
  38.         };  
  39.           
  40.         bn.setOnClickListener(new OnClickListener() {  
  41.               
  42.             @Override  
  43.             public void onClick(View v) {  
  44.                 // TODO Auto-generated method stub   
  45.                 flower.startAnimation(anim);  
  46.                 //设置3。5秒后启动第二个动画   
  47.                 new Timer().schedule(new TimerTask() {  
  48.                       
  49.                     @Override  
  50.                     public void run() {  
  51.                         // TODO Auto-generated method stub   
  52.                         handler.sendEmptyMessage(0x123);  
  53.                     }  
  54.                 }, 3500);  
  55.             }  
  56.         });  
  57.     }  
  58.   
  59. }  

相关内容