1.AnimationDrawable
在XML中加入一组连贯的图片,设置图片的资源和时间间隔
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/ship2_1" android:duration="100"></item>
<item android:drawable="@drawable/ship2_2" android:duration="100"></item>
<item android:drawable="@drawable/ship2_3" android:duration="100"></item>
<item android:drawable="@drawable/ship2_4" android:duration="100"></item>
<item android:drawable="@drawable/ship2_5" android:duration="100"></item>
<item android:drawable="@drawable/ship2_6" android:duration="100"></item>
<item android:drawable="@drawable/ship2_7" android:duration="100"></item>
<item android:drawable="@drawable/ship2_8" android:duration="100"></item>
</animation-list>
在布局中文件中定义一个ImageView,设置其背景为该XML文件
<ImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@null"
android:background="@drawable/background"/>
得到ImageView,通过其得到AnimationDrawable对象
img =(ImageView) findViewById(R.id.img) ;
AnimationDrawable ad = (AnimationDrawable) img.getBackground() ;
通过其start()和stop()方法开始和停止动画。
2.anim的xml实现
动画有rotate,scale,translate,alpha四种,set是这四种动画的集合
Animation anim = AnimationUtils.loadAnimation(MainActivity.this, R.anim.rotate) ;
img.setAnimation(anim);
rotate.xml
<?xml version="1.0" encoding="utf-8"?>
<rotate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:toDegrees="180"
android:pivotX="50%"
android:pivotY="50%"
android:duration="2000"
android:repeatCount="1"
android:repeatMode="reverse">
<!-- android:fillAfter="true" 保留最后的状态-->
<!-- android:pivotX="50%" 表示是围绕自己的中心,"50%p"是围绕父控件的中心 -->
</rotate>
3.layoutAnimation
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
android:delay="30%"
android:animationOrder="reverse"
android:animation="@anim/translate" />
在需要使用的空间中加入layoutAnimation属性
android:layoutAnimation="@anim/layout_anim"
在anim下新建一个xml文件,该文件里面设置了控件的动态效果,所以根标签为set。
在java代码中新建一个Animation对象,采用AnimationUtils.loadAnimation()的方法获得,该方法有一个输入参数及anim下的xml文件id。
新建一个LayoutAnimationController对象,输入参数为上一步新建的Animation对象。
设置改LayoutAnimationController对象的属性,比如控件出场的顺序(该顺序主要有随机,从头到尾,反向3种),控件出现的间隔时间等。
在布局文件中加载该LayoutAnimationController对象。
Animation animation = (Animation)AnimationUtils.loadAnimation(MainActivity.this, R.anim.set_anim);
LayoutAnimationController lac = new LayoutAnimationController(animation);
lac.setOrder(LayoutAnimationController.ORDER_RANDOM);
lac.setDelay(0.5f);//注意这个地方是以秒为单位,是浮点型数据,所以要加f
view.setLayoutAnimation(lac);