Android动画-补间(Tween)动画
2014-11-17 07:55
405 查看
Android动画的两种方式,其中帧动画上篇文章已经讲了,这次主要讲解的就是补间动画,补间动画就是动画业务场景中常用的旋转,平移,缩放,和渐变效果,帧动画是通过轮播动画实现动画效果,补间动画通过在两个关键帧之间补充渐变的动画效果来实现的,相对而言补间动画的暂用的空间更小,补间动画有两种方式,一种是直接在代码中是实现,另外一种是在XML文件中定义,然后通过代码调用,如果以后有需要直接改xml文件就行不需要改代码。
Layout中xml设置:
旋转效果,初始化的时候是旋转0度到360度:
位移效果,第一个参数fromXDelta ,第二个参数toXDelta:分别是动画起始、结束时X坐标,第三个参数fromYDelta ,第四个参数toYDelta:分别是动画起始、结束时Y坐标:
缩放效果
缩放的同时移动(最后两种效果混合):
第二种是在xml文件中定义,将代码中的属性值在xml中设置即可:
渐变xml
调用:
旋转xml:
调用:
缩放xml:
调用:
位移xml:
调用:
组合xml:
调用:
布局文件
先来看下是实现的效果:Layout中xml设置:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.googletween.MainActivity" > <LinearLayout android:id="@+id/line" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <Button android:onClick="alphaEvent" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" android:text="渐变" /> <Button android:onClick="roateEvent" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" android:text="旋转" /> <Button android:onClick="tranEvent" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" android:text="位移" /> <Button android:onClick="scaleEvent" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" android:text="缩放" /> <Button android:onClick="multiEvent" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" android:text="混合" /> </LinearLayout> <ImageView android:id="@+id/image_change" android:layout_width="wrap_content" android:layout_below="@id/line" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:src="@drawable/ic_launcher" /> </RelativeLayout>
动画效果
渐变透明度,初始化构造函数的时候两个数字最小透明度和最大透明度:AlphaAnimation alphaAnimation=new AlphaAnimation(0.1f, 1f); //设置动画时间 alphaAnimation.setDuration(3000); //重复次数 alphaAnimation.setRepeatCount(1); alphaAnimation.setRepeatMode(Animation.REVERSE); image.startAnimation(alphaAnimation);
旋转效果,初始化的时候是旋转0度到360度:
RotateAnimation rotateAnimation=new RotateAnimation(0f, 360f); rotateAnimation.setDuration(2000); image.startAnimation(rotateAnimation);
位移效果,第一个参数fromXDelta ,第二个参数toXDelta:分别是动画起始、结束时X坐标,第三个参数fromYDelta ,第四个参数toYDelta:分别是动画起始、结束时Y坐标:
TranslateAnimation translateAnimation=new TranslateAnimation(0f, 100f, 0f, 100f); translateAnimation.setDuration(2000); image.startAnimation(translateAnimation);
缩放效果
ScaleAnimation scaleAnimation=new ScaleAnimation(0.1f, 1f, 0.1f, 1f); scaleAnimation.setDuration(2000); image.startAnimation(scaleAnimation);
缩放的同时移动(最后两种效果混合):
AnimationSet animationSet=new AnimationSet(true); TranslateAnimation translateAnimation=new TranslateAnimation(0f, 100f, 0f, 100f); ScaleAnimation scaleAnimation=new ScaleAnimation(0.1f, 1f, 0.1f, 1f); animationSet.addAnimation(translateAnimation); animationSet.addAnimation(scaleAnimation); animationSet.setDuration(2000); image.startAnimation(animationSet);
第二种是在xml文件中定义,将代码中的属性值在xml中设置即可:
渐变xml
<?xml version="1.0" encoding="utf-8"?> <alpha xmlns:android="http://schemas.android.com/apk/res/android" android:fromAlpha="0.1" android:toAlpha="1.0" android:duration="2000" android:repeatCount="1" android:repeatMode="reverse"> </alpha>
调用:
Animation alphaAnimation=AnimationUtils.loadAnimation(this, R.anim.alpha); image.startAnimation(alphaAnimation);
旋转xml:
<?xml version="1.0" encoding="utf-8"?> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="2000" android:fromDegrees="0" android:toDegrees="360"> </rotate>
调用:
Animation rotateAnimation=AnimationUtils.loadAnimation(this, R.anim.roate); image.startAnimation(rotateAnimation);
缩放xml:
<?xml version="1.0" encoding="utf-8"?> <scale xmlns:android="http://schemas.android.com/apk/res/android" android:duration="2000" android:fromXScale="0" android:toXScale="1" android:fromYScale="0" android:toYScale="1"> </scale>
调用:
Animation scaleAnimation=AnimationUtils.loadAnimation(this, R.anim.scale); image.startAnimation(scaleAnimation);
位移xml:
<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="2000" android:fromXDelta="0" android:toXDelta="100" android:fromYDelta="0" android:toYDelta="100"> </translate>
调用:
Animation translateAnimation=AnimationUtils.loadAnimation(this, R.anim.tran); image.startAnimation(translateAnimation);
组合xml:
<?xml version="1.0" encoding="utf-8"?> <set> <alpha xmlns:android="http://schemas.android.com/apk/res/android" android:duration="2000" android:fromAlpha="0.1" android:repeatCount="1" android:repeatMode="reverse" android:toAlpha="1.0" > </alpha> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="2000" android:fromDegrees="0" android:toDegrees="360" > </rotate> <scale xmlns:android="http://schemas.android.com/apk/res/android" android:duration="2000" android:fromXScale="0" android:fromYScale="0" android:toXScale="1" android:toYScale="1" > </scale> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="2000" android:fromXDelta="0" android:fromYDelta="0" android:toXDelta="100" android:toYDelta="100" > </translate> </set>
调用:
Animation animationSet=AnimationUtils.loadAnimation(this, R.anim.set); image.startAnimation(animationSet);
相关文章推荐
- Android--Tween补间动画
- Android开发之tween(补间动画)动画及其使用场景(界面切换、弹窗等)详解
- Android动画之补间动画(Tween Animation)实例详解
- android 补间(Tween)动画
- Android动画1-补间动画(TweenAnimation)
- Android中的补间动画(tween)的简单使用
- Android动画之补间动画(Tween Animation)
- android补间动画(tween animation)xml基本属性
- Android 学习之补间(Tween)动画
- Android补间动画(Tween Animation)的使用总结
- Android两大动画之Tween(补间动画)详解
- Android 补间动画(Tween)之一 Tween动画与Interpolator
- Android——动画之补间动画(Tween动画)
- Android 连续的补间动画(Animation/Tween)
- Android开发(26)--补间动画(Tween)的实现
- android—补间动画(Tween Animation)旋转的血轮眼
- Android的图形与图像处理之四 补间动画(Tween)
- android 补间动画 tween animation xml基本属性
- Android 动画系列之补间(Tween)动画详解
- Android动画主要包含补间动画(Tween)View Animation、帧动画(Frame)Drawable Animation、以及属性动画Property Animation