Andriod 的Animations可以从形式上分为两大类,分别是 Tweened Animations 和Frame-By-Frame Animations。Tweened Animations可以理解为补间动画,也就是某一张图或者其他对象,进行旋转、变形等动画;而Frame-By-Frame Animations是多张图片或对象,进行一帧一帧的变化。简单而也,前者是本身改变的动画,后者是与其他内容的交替显示形成的动画。
Tweened Animations的实现
Tweened Animations的第一种实现:
class AlphaOnClickListener implements OnClickListener{
@Override
publicvoid onClick(View arg0) {
// TODO Auto-generated method stub
AnimationSet animationSet = new AnimationSet(true);//创建一个Animation的集合,这里构造函数的参数是个boolean值,他表示的是这个AnimationSet中是否共享一个Interpolator,也就是在这个集合内不同的动画是否以同样地速率变化,如果为false,那么下面需要对每一个动画进行Interpolator的设置。
AlphaAnimation alphaAnimation = new AlphaAnimation(1,0);//设置从不透明到透明,这里两个参数的取值为0~1,0表示完全透明,1表示完全不透明
alphaAnimation.setDuration(2000);//设置动画的时间为2秒
animationSet.addAnimation(alphaAnimation);//将创建的alphaAnimation加入Animation集合中
item.startAnimation(animationSet);//在ImageView上设置动画
}
}
class RotateOnClickListener implements OnClickListener{
@Override
publicvoid onClick(View arg0) {
// TODO Auto-generated method stub
AnimationSet animationSet = new AnimationSet(true);//同上
RotateAnimation rotateAnimation = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
//RotateAnimation有6个参数
//1.初始的角度
//2.旋转的角度,可以为负的,即为逆时针转
//3.转的圆心的X坐标是相对谁为参照物的,这里有3种情况:RELATIVE_TO_SELF,RELATIVE_TO_PARENT,ABSOLUTE,分别是相对自己,相对父控件,绝对位置
//4.具体的X坐标,与第三个参数有关,若第3个参数是Animation.RELATIVE_TO_SELF,第四个参数是0.5f,那么圆心的X坐标就是自身控件宽度的0.5倍
//5.转的圆心的Y坐标是相对谁为参照物,参数同3
//6. 具体的Y坐标,与第三个参数有关,若第3个参数是Animation.RELATIVE_TO_SELF,第四个参数是0.5f,那么圆心的Y坐标就是自身控件宽度的0.5倍
rotateAnimation.setDuration(2000);//设置动画的时间
animationSet.addAnimation(rotateAnimation);//将创建的alphaAnimation加入Animation集合中
item.startAnimation(animationSet);//在ImageView上设置动画
}
}
class TranslateOnClickListener implements OnClickListener{
@Override
publicvoid onClick(View arg0) {
// TODO Auto-generated method stub
AnimationSet animationSet = new AnimationSet(true);//创建一个Animation的集合
TranslateAnimation translateAnimation = new TranslateAnimation(Animation.RELATIVE_TO_SELF,0,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0,Animation.RELATIVE_TO_SELF,1f);
//第1,2个参数是变化之前的X坐标
//第3,4个参数是变化之后的X坐标
//第5,6个参数是变化之前的Y坐标
//第7,8个参数是变化之后的Y坐标
translateAnimation.setDuration(2000);//设置动画的时间
animationSet.addAnimation(translateAnimation);//将创建的alphaAnimation加入Animation集合中
item.startAnimation(animationSet);//在ImageView上设置动画
}
}
class ScaleOnClickListener implements OnClickListener{
@Override
publicvoid onClick(View arg0) {
// TODO Auto-generated method stub
AnimationSet animationSet = new AnimationSet(true);//同上
ScaleAnimation scaleAnimation = new ScaleAnimation(1, 0.1f,1,0.1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
//第1个参数是X的原始比率,第2个参数是X变化后的比率
//第3个参数是Y的原始比率,第4个参数是Y变化后的比率
//第5,6个参数是最后动画结束时的X轴坐标
//第7,8个参数是最后动画结束时的Y轴坐标
scaleAnimation.setDuration(2000);//设置动画的时间
animationSet.addAnimation(scaleAnimation);//将创建的alphaAnimation加入Animation集合中
item.startAnimation(animationSet);//在ImageView上设置动画
}
}
以上是Tweened Animations的基本使用,当然还有其他的设置,比如设置延迟动画可以使用对Animation或AnimationSet设置setStartOffset(long time)等。
Tweened Animations的第二种实现:
<?xmlversion="1.0"encoding="UTF-8"?>
<setxmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
>
</set>
<alpha
android:fromAlpha="1.0"//初始透明度
android:toAlpha="0.0"//结束透明度
android:duration="3000"//时长
></alpha>
<rotate
android:fromDegrees="0"//初始旋转角度
android:toDegrees="-360"//结束旋转角度,可为负,即逆时针
android:duration="3000"//时长
android:pivotX="50%" //下方介绍
android:pivotY="50%"//下方介绍
></rotate>
<scale
android:fromXScale="1.0"//初始X坐标比率
android:toXScale="0.1"//结束X坐标比率
android:fromYScale="1.0"//初始Y坐标比率
android:toYScale="0.1"//结束Y坐标比率
android:pivotX="50%"//下方介绍
android:pivotY="50%"//下方介绍
android:duration="3000"//时长
></scale>
<translate
android:fromXDelta="0%"//下方介绍
android:toXDelta="50%"//下方介绍
android:fromYDelta="0%"//下方介绍
android:toYDelta="100%"//下方介绍
android:duration="3000"//时长
></translate>
class AlphaOnClickListener implements OnClickListener{
@Override
publicvoid onClick(View arg0) {
// TODO Auto-generated method stub
Animation alphaAnimation = AnimationUtils.loadAnimation(AnimationDemo2Activity.this, R.anim.alpha);//载入alpha.xml
item.startAnimation(alphaAnimation);//在ImageView上设置动画
}
}
以上是Tweened Animations的两种基本用法,Animation的使用远远不止这些,需要进一步的学习哇。
附件是Tweened Animations的两种基本用法的示例代码,仅供参考。
如果我的文章给与了你帮助,就不妨请我喝杯咖啡吧,点击->
转载于:https://blog.51cto.com/theron/656385