Android动画

来源:互联网 发布:开票软件为何启动不了 编辑:程序博客网 时间:2024/05/16 06:58

逐帧(Frame)动画

逐帧动画就是把动画过程的静态图片收集起来,然后由Android依次显示这些图片,有动画效果。

如何定义动画?

在drawable目录下新建xml文件,在该文件中用定义动画,在元素中,使用子元素来定义每张图片,以及图片的显示时间。

如何启动动画?

用ImageView来显示动画。通过findViewById()找到动画xml文件,转成ImageView;然后用ImageView对象获取背景,转成AnimationDrawable;然后调用AnimationDrawable对象的start()方法可以启动动画,调用stop()方法可以停止动画。

补间(Tween)动画

补间动画就是指开发者只需要提供动画开始,动画结束等关键帧,而动画变化的中间帧则由系统计算补齐。

开发者需要定义:动画开始,动画结束,持续时间。

补间动画的5种效果

  1. AlphaAnimation:透明度渐变效果

  2. ScaleAnimation:缩放渐变效果

  3. TranslateAnimation:位移渐变效果

  4. RotateAnimation:旋转渐变效果

  5. AnimationSet:组合渐变

Interpolator

用来控制动画的变化速度,可以理解成动画渲染器,当然我们也可以自己实现Interpolator 接口,自行来控制动画的变化速度,而Android中已经为我们提供了五个可供选择的实现类:

  1. LinearInterpolator:动画以均匀的速度改变
  2. AccelerateInterpolator:在动画开始的地方改变速度较慢,然后开始加速
  3. AccelerateDecelerateInterpolator:在动画开始、结束的地方改变速度较慢,中间时加速
  4. CycleInterpolator:动画循环播放特定次数,变化速度按正弦曲线改变
  5. DecelerateInterpolator:在动画开始的地方改变速度较快,然后开始减速

这些属性主要写在xml文件中

启动动画步骤

  1. 获取到View对象
  2. 通过AnimationUtils.loadAnimation()获取到动画
  3. View对象调用startAnimation()开启动画

属性动画

出现的原因

改进补间动画的缺点,它实际上是一种不断地对值进行操作的机制,并将值赋值到指定对象的指定属性上,可以是任意对象的任意属性。

写法

  • 代码编写
  • XML编写

用法

  • ValueAnimator

初始值和结束值之间的动画过渡就是由ValueAnimator这个类来负责计算的。它的内部使用一种时间循环的机制来计算值与值之间的动画过渡,我们只需要将初始值和结束值提供给ValueAnimator,并且告诉它动画所需运行的时长,那么ValueAnimator就会自动帮我们完成从初始值平滑地过渡到结束值这样的效果。

步骤:

1. 通过ofFloat或者onInt()等方法获得ValueAnimator 对象2. 通过setXxx()等一些列方法进行设置相关属性3. 调用start()方法启动
  • ObjectAnimator

它可以对任意对象的任意属性进行动画操作,继承自ValueAnimator

步骤:

1. 通过ofFloat()或者ofInt()方法创建ObjectAnimator实例,该方法的参数:参数1代表要操作的object对象,参数2代表要对该对象的哪个属性进行操作,后面的参数就不固定长度了。2. 通过setXxx()一系列方法进行相关设置3. 调用start()方法启动
  • Animator监听器

    addListener(),可以实现new AnimatorListener() 中的4个方法,也可以使用new AnimatorListenerAdapter(),选择需要的方法去实现。

  • XML编写动画

标签如下

1. <animator>  对应代码中的ValueAnimator2. <objectAnimator>  对应代码中的ObjectAnimator3. <set>  对应代码中的AnimatorSet

步骤:

1. 在res目录下新建animator文件夹,新建xml文件,完成动画2. 通过AnimatorInflater.loadAnimator()方法来获取到Animator对象3. 调用start()方法启动
0 0
原创粉丝点击