美文网首页
Android 动画机制(一)

Android 动画机制(一)

作者: BlingBest | 来源:发表于2018-12-27 18:01 被阅读21次

逐帧动画(Frame Animation)


         逐帧动画也叫Drawable Animation,是最简单最直观的动画类型,它利用人眼的视觉暂留效应---也就是光对视网膜所产生的视觉在光停止后,仍会保留一段时间的现象。

        在Android中实现逐帧动画,是由设计师给出一系列状态不断变化的图片,开发者可以指定动画中每一帧对应的图片和持续的时间,有两种方式可以定义逐帧动画,分别是采用xml资源文件和代码实现

1 XML资源文件方式

这是最常使用的方式,首先我们将每一帧的图片放到res/drawable目录中,然后再res/anim目录中新建一个动画XML文件,在这个文件中使用<animation-list>标签来定义动画帧序列,使用<item>标签来定义动画的每一帧,并在其中指定帧的持续时间等属性

其中android:onshot用来控制动画是否循环播放,如果取值为true,表示动画不会循环播放,否则动画将会循环播放,android:duration用来指定每一帧的播放持续时间

2 代码方式

定义好逐帧动画之后,可以在符合某个条件时触发或者停止播放动画

补间动画(Tween Animation)


         补间动画是指开发者无需定义动画过程的每一帧,只需要定义动画的开发和结束这两个关键帧,并指定动画变化的时间和方式,然后交由Android系统计算,通过在两个关键帧之间插入渐变值来实现平滑过渡,从而对View的内容完成一系列的图形变换来实现动画效果,主要包括四种基本的效果:透明度变化Alpha,大小变化Scale,位移变化Translate及旋转变化Rotate,这四种效果可以动态组合,从而实现复杂灵活的动画,同样,定义补间动画也可以分为XML资源文件和代码两种方式。

插值器Interpolator

         Interpolator 会根据类型的不同,选择不同的算法计算出在补间动画期间所需要动态插入帧的密度和位置,Interpolator 负责控制动画的变化速度,使得前面所说的四种基本动画能够匀速,加速,减速,抛物线等多种速度进行变化。

具体到Android代码中,Interpolator 类其实是一个空接口,它继承自TimeInterpolator,TimeInterpolator 时间插值器允许动画进行非线性运动变换,如加速和减速等,改接口中只有float getInterpolation(float input)这个方法,入参是一个0.0~1.0的值,返回值可以小于0.0也可以大于1.0.

Android SDK默认提供了几个Interpolator是实现类

Android SDK使用Animation类来表示动画类,上面介绍的补间动画四种基本类型分别对应

AlphaAnimation

XML方式就是在res/anim目录中新建XML文件

AlphaAnimation 的构造函数只有两个参数,分别是初始的透明度和接受的透明度,语句如下。

在代码中实现透明度动画很简单,只需创建一个AlphaAnimation实例,然后设置动画持续时间即可

ScalaAnimation

XML实现示例如下

在代码中实现,ScaleAnimation可用的构造函数有三个,代码如下

ScaleAnimation 的使用如下

TranslateAnimation

XML实现实例如下

在代码实现中,TranslateAnimation可用的构造函数有两个:

TranslateAnimation的使用如下

RotateAnimation

XML实例示例如下

在代码实现中,RotateAnimation可用的构造函数有三个,代码如下

其中入参的含义

RotateAnimation的使用如下

自定义补间动画

         自定义补间动画只需要继承Animation,并重写这个抽象基类中的applyTransformation方法,在其中实现具体的动画变换逻辑

         interpolatedTime表示动画的时间进行比,无论动画的实际持续时间是多少,这个参数总是回从0变化到1,transformtion表示补间动画在不同时刻对View的变形程度。

相关文章

  • Android高级进阶指南

    android 触摸事件传递机制 android view的绘制流程 android 的动画机制 Support ...

  • Android动画机制

    Android动画机制 帧动画 补间动画 属性动画 过渡动画未完待续

  • Transition Animation学习笔记

    Android中的动画 Android框架为开发者提供了三种类型动画机制: Property Animation ...

  • Android动画机制

    qq群:614530228 Android动画机制 在Android 3.0之前的版本,我们能使用的动画类型有两种...

  • Android 动画机制(一)

    逐帧动画(Frame Animation) 逐帧动画也叫Drawable Animation,是最简单最直...

  • Android群英传读书笔记(第七章)

    上一章 书中的示例代码:github 本章主要介绍的是Android动画机制和使用技巧 1.Android视图动画...

  • 使用Glide v4加载SVG资源

    Android使用矢量图(SVG, VectorDrawable)实践篇 Android SVG矢量动画机制 先放...

  • Android 动画机制

    一、Android的动画的分类:(实现方式有:xml资源文件方式,代码方式) 逐帧动画(Drawable An...

  • Android 动画机制

    一、前言 移动客户端的一个特点就是炫酷的界面,而Android中的界面都是View,所以要想实现性能高且好看的界面...

  • Android动画机制

    1.逐帧动画(Frame Animation) (1)XML资源文件方式最常用的方式,将每一帧图片放到res/dr...

网友评论

      本文标题:Android 动画机制(一)

      本文链接:https://www.haomeiwen.com/subject/xdddlqtx.html