Android属性动画实战教程开篇

来源:互联网 发布:海岛奇司令部升级数据 编辑:程序博客网 时间:2024/06/11 05:04

本系列博客会分俩篇
本篇博客主要是会介绍属性动画代码使用和xml中使用
关于View动画和属性动画的区别不做过多的介绍,当然涉及到的地方会简单的提一下。

好了废话不多说,直接上内容

首先介绍代码中使用属性动画
首先介绍几个比较重要的类
ValueAnimator
ObjectAnimator
AnimatorSet

其中ValueAnimator是一个基类,他主要是实现了属性动画值的变化,没有任何的动画效果。
ObjectAnimator继承ValueAnimator,并且实现了对对象的属性的操作,从而产生动画效果。
AnimatorSet这个类是一个可以同时执行多个动画效果的集合。

下面通过一个列子介绍,实现TextView在X轴方向的移动

ObjectAnimator translationXAnimator = ObjectAnimator.ofFloat(propertyAnim, "translationX",                currentTranslationX, -propertyAnim.getWidth(), currentTranslationX);translationXAnimator.setDuration(2000); translationXAnimator.start();  

关于这段代码的解析

ofFloat() 参数解析

第一个参数 动画作用对象(任意对象,这地方也是属性动画区别与View动画的)
第二个参数 动画作用的属性(这个地方需要注意,在设置属性的时候,要做到俩点要求,一下内容来自Android开发艺术探索
1.设置的属性要有对应的set/get方法,否则可能无效果或者是奔溃;
2.set方法里面必须实现对属性的改变可以通过某种方式反映出来,否则无效果。
第三个参数是一个可变参数,进行指定动画的变化过程值

setDuration()

设置动画指定时间,长整形,单位 毫秒

start()

开始执行

其他api可以在博客最后下载源代码,里面有更详细的说明,以及AnimatorSet的使用

下面介绍xml中使用属性动画

这个就比较简单了直接上代码

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"    android:ordering="sequentially">    <objectAnimator        android:duration="2000"        android:propertyName="translationX"        android:valueFrom="0"        android:valueTo="250"        android:valueType="floatType"        android:repeatMode="reverse"        android:repeatCount="2"/>    <objectAnimator        android:duration="1000"        android:propertyName="alpha"        android:valueFrom="0"        android:valueTo="1"        android:valueType="floatType" />    <set android:ordering="together">        <objectAnimator            android:duration="2000"            android:propertyName="rotation"            android:valueFrom="0"            android:valueTo="360"            android:valueType="floatType"/>        <objectAnimator            android:duration="3000"            android:propertyName="scaleX"            android:valueFrom="1.0"            android:valueTo="2.0"            android:valueType="floatType"/>    </set></set>

下面关于里面几个属性进行一下简单的说明

android:ordering=”sequentially” 多个动画执行的逻辑,顺序执行,一起执行
android:propertyName=”scaleX” 指定动画操作的属性
在api19 里面添加了 android:propertyXName android:propertyYName 俩个更加细分的属性
android:duration=”2000” 指定动画执行的时间
android:repeatCount=”2” 指定动画重复执行的次数
android:repeatMode=”reverse” 指定动画重复执行的模式,俩种
1.重复
2.逆向
android:valueFrom=”1.0” 动画操作属性起始值
android:valueTo=”2.0” 动画操作属性结束值
android:valueType=”floatType” 动画操作属性变化类型

通过对比会发现,在使用属性动画的时候,通过代码实现会更加的简单实用,在xml文件中实现动画,会有好多局限,比如平移的时候位置的设置等等,所以推荐使用代码实现属性动画

还要说明的一点是个人的理解,各位看不看随便了
属性动画没有复位这一说法,View动画有。
这个地方其实可以很好的说明了View动画的局限,还有属性动画在View动画上面的优势,
因为View动画只是效果的展示,并没有实现改变View的属性,所以正常情况在执行完复位是很有必要的,不会影响界面逻辑和各种事件;
但是属性动画则不同,属性动画是通过不停的改变对象的属性,所以在执行完成后,所见即所得,没有必要复位,不会对对象有影响,如果有需要,可以在动画开启前记录下初始值,在动画结束后进行赋值操作,实现复位。(该方法来来自一位群友的建议)

给你想要的源码

0 0
原创粉丝点击