Android动画Animation的两种加载执行方式

转载https://blog.csdn.net/zhangphil/article/details/47394225

本文以简单的AlphaAnimation(“淡入淡出(透明度改变)”动画)为例,简单的说明Android动画Animation的两种加载执行方法:
(1) 直接写Java代码,制作Android动画。
(2) 写XML配置文件,加载XML资源文件执行。
其实这两者是一致的。要知道,在Android中,凡是可以在XML文件完成的View,代码亦可完全写出来。
现在先给出一个Java代码完成的动画AlphaAnimation,AlphaAnimation功能简单,简言之,可以让一个View在一个给定时间内从一个透明度变成另外一个透明度。0.0f是完全透明,1.0f是完全不透明。

A。第一种做法,写Java代码实现。

测试用的主Activity很简单,就一个居中显示的TextView,显示一串文字:Android动画,该TextView启动后在3秒内从完全透明渐变到完全不透明。MainActivity.java :

[java]  view plain  copy
  1. package zhangphil.animation;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.view.animation.AlphaAnimation;  
  6. import android.view.animation.AnimationSet;  
  7. import android.widget.TextView;  
  8.   
  9. public class MainActivity extends Activity {  
  10.   
  11.     @Override  
  12.     protected void onCreate(Bundle savedInstanceState) {  
  13.         super.onCreate(savedInstanceState);  
  14.   
  15.         setContentView(R.layout.activity_main);  
  16.         TextView text = (TextView) findViewById(R.id.text);  
  17.   
  18.         // “淡入淡出”动画。  
  19.         // 0.0f,完全透明,  
  20.         // 1.0f,完全不透明。  
  21.         AlphaAnimation alphaAnimation = new AlphaAnimation(0.0f, 1.0f);  
  22.         alphaAnimation.setDuration(3000);  
  23.   
  24.         // 动画集。  
  25.         AnimationSet animationSet = new AnimationSet(false);  
  26.         animationSet.addAnimation(alphaAnimation);  
  27.   
  28.         // 开始播放动画。  
  29.         text.startAnimation(animationSet);  
  30.     }  
  31. }  

MainActivity.java需要的activity_main.xml布局文件:

[html]  view plain  copy
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent" >  
  5.   
  6.     <TextView  
  7.         android:id="@+id/text"  
  8.         android:layout_width="match_parent"  
  9.         android:layout_height="wrap_content"  
  10.         android:layout_centerVertical="true"  
  11.         android:gravity="center"  
  12.         android:textSize="30sp"  
  13.         android:text="Android动画" />  
  14.   
  15. </RelativeLayout>  

这是第一种Java代码写法。


B。第二种做法,写XML文件实现。


介绍第二种XML写法。MainAvtivity.java:

[java]  view plain  copy
  1. package zhangphil.animation;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.view.animation.Animation;  
  6. import android.view.animation.AnimationUtils;  
  7. import android.widget.TextView;  
  8.   
  9. public class MainActivity extends Activity {  
  10.   
  11.     @Override  
  12.     protected void onCreate(Bundle savedInstanceState) {  
  13.         super.onCreate(savedInstanceState);  
  14.         setContentView(R.layout.activity_main);  
  15.   
  16.         TextView text = (TextView) findViewById(R.id.text);  
  17.   
  18.         // 初始化需要加载的动画资源  
  19.         Animation animation = AnimationUtils  
  20.                 .loadAnimation(this, R.anim.my_anim);  
  21.   
  22.         // 将TextView执行Animation动画  
  23.         text.startAnimation(animation);  
  24.     }  
  25. }  


MainActivity.java需要的activity_main.xml文件不做任何修改和上述的A相同。

复杂代码工作转嫁到定义anim的XML。

一,需要在res/目录下建立一个anim文件夹,在里面创建一个Android资源文件,假设这个名字自定义为my_anim.xml。目录结构层次如图所示:


二,完成动画所需要的控制要素集代码,my_anim.xml具体代码:

[html]  view plain  copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <set xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:interpolator="@android:anim/accelerate_interpolator" >  
  4.   
  5.     <alpha  
  6.         android:duration="3000"  
  7.         android:fromAlpha="0"  
  8.         android:toAlpha="1.0" />  
  9.     <!--  
  10.         透明度控制动画效果 alpha  
  11.         浮点型值:  
  12.             fromAlpha 动画起始时透明度  
  13.             toAlpha   动画结束时透明度  
  14.             说明:   
  15.                 0.0表示完全透明  
  16.                 1.0表示完全不透明  
  17.             以上值取0.0-1.0之间的float数据类型的数字  
  18.           
  19.         整数:  
  20.             duration  动画持续时间  
  21.             说明:       
  22.                 时间以毫秒为单位  
  23.     -->  
  24. </set>  


猜你喜欢

转载自blog.csdn.net/sinat_17775997/article/details/80736444
今日推荐