Android动画:
Android动画主要包含补间动画(Tween)View Animation、帧动画(Frame)Drawable Animation、以及属性动画Property Animation。下面依次介绍一下各个动画。
1.补间动画:
Tween动画,通过对View的内容进行一系列的图形变换 (包括平移、缩放、旋转、改变透明度)来实现动画效果。动画效果的定义可以采用XML来做也可以采用编码来做。Tween动画有以下4种类型:
- TranslationAnimation--平移动画
实例:
TranslateAnimation ta=new TranslateAnimation(0,50f,0f,50f);
<pre name="code" class="java">ta.setDuration(1000);//设置动画执行时间
ta.setRepeatCount(Animation.INFINITE);//设置重复播放的次数
ta.setRepeatMode(Animation.REVERSE);//设置重复播放的模式
iv.startAnimation(ta);
- AlpahAnimation--透明度动画
实例:
//透明度动画
AlphaAnimation aa=new AlphaAnimation(0f,1.0f);
aa.setDuration(1000);//设置动画执行时间
aa.setRepeatCount(Animation.INFINITE);//设置重复播放的次数
aa.setRepeatMode(Animation.REVERSE);//设置重复播放的模式
<pre name="code" class="java">iv.startAnimation(aa);
- ScaleAnimation--缩放动画
实例:
//缩放动画
ScaleAnimation sa=new ScaleAnimation(0.2f,2.0f,0.2f,2.0f,
ScaleAnimation.RELATIVE_TO_SELF,0.5f,ScaleAnimation.RELATIVE_TO_SELF,0.5f);
sa.setDuration(1000);//设置动画执行时间
sa.setRepeatCount(Animation.INFINITE);//设置重复播放的次数
sa.setRepeatMode(Animation.REVERSE);//设置重复播放的模式
<pre name="code" class="java">iv.startAnimation(sa);
- RotateAnimation--旋转动画
实例:
//旋转动画
RotateAnimation ra=new RotateAnimation(0f,360f, Animation.RELATIVE_TO_SELF,
0.5f, Animation.RELATIVE_TO_SELF, 0.5f);//其中两个参数代表了动画的起始透明图和结束的透明度
ra.setDuration(1000);//设置动画执行时间
ra.setRepeatCount(Animation.INFINITE);//设置重复播放的次数
ra.setRepeatMode(Animation.REVERSE);//设置重复播放的模式
<pre name="code" class="java">iv.startAnimation(ra);
当然,可以将以上的动画放到集合中,进行组合
//动画集合
AnimationSet set=new AnimationSet(false);
set.addAnimation(ra);
set.addAnimation(aa);
set.addAnimation(sa);
iv.startAnimation(set);
除了以上的方式来进行动画的实现,同时还可以使用xml文件来描述动画,不过,动画的xml文件要放在res/anim文件夹下
代码
xml文件
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXScale="20%"
android:toXScale="200%"
android:fromYScale="20%"
android:toYScale="200%"
android:duration="2000"
android:repeatCount="2"
android:pivotX="50%"
android:pivotY="50%"
android:repeatMode="reverse"
>
</scale>
在代码中显示
ScaleAnimation sa= (ScaleAnimation) AnimationUtils.loadAnimation(getBaseContext(),R.anim.scale);
iv.startAnimation(sa);
缺点:只是视觉上的动画效果,不会改变View本身的位置和属性
提示:虽然可以通过代码的方式定义动画,但是Android官方还是建议在xml中定义动画效果,这样可做到最大程度上的解耦,方便项目的后期维护。