Android Animation初试

来源:互联网 发布:巳知电阻怎样算功率 编辑:程序博客网 时间:2024/05/16 07:40

          公司最近要做一个小项目,需要使用到动画效果,之前一直没使用过,怎么办呢,只有重头学。还好,前面有很多大神已经说的很清楚了,可以直接学习。


       一开始公司的项目需求只需要使用到 View Animation(视图动画),也称为Tween Animation(补间动画),这类动画有四种简单的效果,能对view的大小,位置,角度,透明度的改变来实现动画效果。常用的实现方法有两种,一种是直接用java代码实现,另一种是对XML进行定义,然后通过AnimationUtils类进行加载,两种方式达到的效果是一样的,相对来说java代码实现更为简单,因为对我来说这是学习一项新的技术,所以我对这些都去做了了解和实践。下面对四种效果分别介绍用这两种方法实践(java代码实现比较简单,只给出AlphaAnimation的实现):


1.Alpha:

java代码实现:

    定义对象:

private AlphaAnimation myAnimation_Alpha;
         构造对象:
//fromAlpha为 动画开始时候透明度//toAlpha为 动画结束时候透明度AlphaAnimation(float fromAlpha, float toAlpha) //0.0表示完全透明,1.0表示完全不透明myAnimation_Alpha=new AlphaAnimation(0.1f, 1.0f);
      设置持续时间:

//设置持续时间为 1000毫秒myAnimation_Alpha.setDuration(1000);
     基本上设置这些就够了,当然,如果你需要,还可以使用下面一些方法进行更进一步的设置:

   setFillAfter(boolean)         //动画结束时是否保持最后的状态

   setFillBefore(boolean)      //动画结束时是否还原到开始前的状态

   setRepeatCount(int)         //重复次数

   setRepeatMode(int)         //重复类型,reverse表示倒序回放,restart表示从头播放

   setStartOffset(long)         //调用start函数之后等待开始运行的时间,单位为毫秒

   setZAdjustment(int)         //表示动画内容运行在Z轴上的位置(top/bottom/normal),默认为normal

   setInterpolator(Interpolator)      //设定插值器


     大家发现,这里出现了一个全新的东西,插值器,在这里介绍一下:java类xml id值描述AccelerateDecelerateInterpolator@android:anim/accelerate_decelerate_interpolator动画始末速率较慢,中间加速AccelerateInterpolator@android:anim/accelerate_interpolator动画开始速率较慢,之后慢慢加速AnticipateInterpolator@android:anim/anticipate_interpolator开始的时候从后向前甩AnticipateOvershootInterpolator@android:anim/anticipate_overshoot_interpolator类似上面AnticipateInterpolatorBounceInterpolator@android:anim/bounce_interpolator动画结束时弹起CycleInterpolator@android:anim/cycle_interpolator循环播放速率改变为正弦曲线DecelerateInterpolator@android:anim/decelerate_interpolator动画开始快然后慢LinearInterpolator@android:anim/linear_interpolator动画匀速改变OvershootInterpolator@android:anim/overshoot_interpolator向前弹出一定值之后回到原来位置PathInterpolator 新增,定义路径坐标后按照路径坐标来跑。具体的应用方法后面会涉及。


XML实现:

     我比较喜欢这种,因为这样可以使得java代码的逻辑减少,方便阅读。

首先得在res文件下创建anim文件,在anim下新建一个anim_alpha.xml文件,xml文件中添加以下代码:

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" >    <alpha        android:duration="1000"        android:fromAlpha="0.0"        android:toAlpha="1.0" />    <!--     透明度控制动画效果 alpha        浮点型值:            fromAlpha 属性为动画起始时透明度            toAlpha   属性为动画结束时透明度            说明:                 0.0表示完全透明                1.0表示完全不透明            以上值取0.0-1.0之间的float数据类型的数字                长整型值:            duration  属性为动画持续时间            说明:                     时间以毫秒为单位    --></set>
接下来在activity中使用:

  //定义Animation对象

  private Animation myAnimation_Alpha;

 //使用AnimationUtils类的静态方法loadAnimation()来加载XML中的动画XML文件

 myAnimation_Alpha=AnimationUtils.loadAnimation(this,R.anim.anim_alpha);

   

(另外三种效果明天再码)

    

0 0
原创粉丝点击