目录
目录 android动画学习 tween animation scale动画调节尺寸 alpha动画调节透明度 rotate动画旋转 translate动画平移
android动画学习 android中动画分为3种:
tween animation:通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生的动画效果,即是一种渐变动画。 frame animation:顺序播放事先做好的图像,是一种画面转换动画。 property animation:属性动画,通过动态地改变对象的属性从而达到动画效果,属性动画为api 11新特性。 这篇博客主要来分析tween animation的基本使用。
tween animation tween animation有四种形式:
alpha : 渐变透明动画效果。 scale : 渐变尺寸伸缩动画效果。 translate : 画面位置移动动画效果。 rotate : 画面旋转动画效果。 这四种动画实现方式都是通过animation类和animationutils配合实现的。动画效果可以预先配置在res/anim目录下的xml文件中。
scale动画?调节尺寸 scale的参数如下:
android:fromxscale:起始的x方向上相对自身的缩放比例,浮点值。例如1.0代表无变化,0.5代表起始时虽小一倍,2.0代表放大一倍。 android:toxscale:结束时x方向上相对自身的缩放比例。 android:fromyscale:起始时y方向上相对自身的缩放比例。 android:toyscale:结束时y方向上相对自身的缩放比例。 android:pivotx:缩放起点x轴坐标,可以是数值、百分比、百分数三种形式。(注意:起点指的是当前view左上角的坐标) android:pivoty:缩放起点y轴坐标。 此外,animation类是所有动画(scale、alpha、translate、rotate)的基类,从animation类继承的属性:
android:duration:动画持续时间,以毫秒为单位。 android:fillafter:如果设置为true,控件动画结束时,将保持动画最后时的状态。 android:fillbefore:如果设置为true,控件动画结束后,还原到开机动画前的状态。 android:fillenabled:与android:fillbefore的效果相同,都是在动画结束时将控件还原到初始状态。 android:repeatcount:重复次数 android:repeatmode:重复类型,有reverse和restart两个值,reverse表示倒序回放,restart表示重新放一遍。 光说不练习是不行的,这里给出一个anim的xml文件、一个layout布局文件和一个activity类,来练习一下scale animation的使用。
res/anim/anim_scale.xml文件如下:
res/layout/tween_animation_layout.xml文件如下:
动画演示实现类实现如下:
import com.example.photocrop.r;import android.app.activity;import android.os.bundle;import android.view.view;import android.view.view.onclicklistener;import android.view.animation.animation;import android.view.animation.animationutils;import android.widget.button;import android.widget.imageview;public class tweenanimationtest extends activity implements onclicklistener { private button alphabutton; private button scalebutton; private button rotatebutton; private button transbutton; private imageview animimageview; @override protected void oncreate(bundle savedinstancestate) { // todo auto-generated method stub super.oncreate(savedinstancestate); setcontentview(r.layout.tween_animation_layout); initview(); } private void initview() { animimageview = (imageview) findviewbyid(r.id.anim_image); alphabutton = (button) findviewbyid(r.id.alpha_button); scalebutton = (button) findviewbyid(r.id.scale_button); rotatebutton = (button) findviewbyid(r.id.rotate_button); transbutton = (button) findviewbyid(r.id.trans_button); alphabutton.setonclicklistener(this); scalebutton.setonclicklistener(this); rotatebutton.setonclicklistener(this); transbutton.setonclicklistener(this); } @override public void onclick(view v) { switch (v.getid()) { case r.id.alpha_button: break; case r.id.scale_button: animation animation = animationutils.loadanimation(this, r.anim.anim_scale); animimageview.startanimation(animation); break; case r.id.rotate_button: break; case r.id.trans_button: break; } }}
alpha动画?调节透明度 alpha的参数如下:
android:fromalpha:动画开始的透明度,从0.0~1.0,0.0表示完全透明,1.0表示完全不透明。 android:toalpha:动画结束的透明度,也是从0.0~1.0。 从animation类继承的属性:
android:duration:动画持续时间,以毫秒为单位。 android:fillafter:如果设置为true,控件动画结束时,将保持动画最后时的状态。 android:fillbefore:如果设置为true,控件动画结束后,还原到开机动画前的状态。 android:fillenabled:与android:fillbefore的效果相同,都是在动画结束时将控件还原到初始状态。 android:repeatcount:重复次数 android:repeatmode:重复类型,有reverse和restart两个值,reverse表示倒序回放,restart表示重新放一遍。 我们以上一个tweenanimationtest类为模板,当点击alpha button的时候,我们触发透明度动画效果。
res/anim/anim_alpha.xml文件如下:
响应点击alpha button的listener事件为:
case r.id.alpha_button: animation alphaanimation = animationutils.loadanimation(this, r.anim.anim_alpha); animimageview.startanimation(alphaanimation); break;
rotate动画?旋转 rotate参数如下:
android:fromdegrees:开始旋转的角度位置,正数值代表顺时针的角度,负数值代表逆时针旋转的角度。 android:todegrees:结束时旋转到的角度位置,正数值代表顺时针的角度,负数值代表逆时针旋转的角度。 android:pivotx:旋转起点的x轴坐标。 android:pivoty:旋转起点的y轴坐标。 从animation类继承的属性:
android:duration:动画持续时间,以毫秒为单位。 android:fillafter:如果设置为true,控件动画结束时,将保持动画最后时的状态。 android:fillbefore:如果设置为true,控件动画结束后,还原到开机动画前的状态。 android:fillenabled:与android:fillbefore的效果相同,都是在动画结束时将控件还原到初始状态。 android:repeatcount:重复次数 android:repeatmode:重复类型,有reverse和restart两个值,reverse表示倒序回放,restart表示重新放一遍。 res/anim/anim_rotate.xml文件如下:
响应点击alpha button的listener事件为:
case r.id.rotate_button: animation rotateanimation = animationutils.loadanimation(this, r.anim.anim_rotate); animimageview.startanimation(rotateanimation); break;
translate动画?平移 translate参数:
android:fromxdelta:起始x轴坐标。 android:fromydelta:起始y轴坐标。 android:toxdelta:结束x轴坐标。 android:toydelta:结束y轴坐标。 从animation类继承的属性:
android:duration:动画持续时间,以毫秒为单位。 android:fillafter:如果设置为true,控件动画结束时,将保持动画最后时的状态。 android:fillbefore:如果设置为true,控件动画结束后,还原到开机动画前的状态。 android:fillenabled:与android:fillbefore的效果相同,都是在动画结束时将控件还原到初始状态。 android:repeatcount:重复次数 android:repeatmode:重复类型,有reverse和restart两个值,reverse表示倒序回放,restart表示重新放一遍。 注意:京东splash页面的进度条用的就是translate动画。
res/anim/anim_rotate.xml文件如下:
响应点击alpha button的listener事件为:
case r.id.trans_button: animation transanimation = animationutils.loadanimation(this, r.anim.anim_translate); animimageview.startanimation(transanimation); break;