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的属性,所以正常情况在执行完复位是很有必要的,不会影响界面逻辑和各种事件;
但是属性动画则不同,属性动画是通过不停的改变对象的属性,所以在执行完成后,所见即所得,没有必要复位,不会对对象有影响,如果有需要,可以在动画开启前记录下初始值,在动画结束后进行赋值操作,实现复位。(该方法来来自一位群友的建议)
给你想要的源码
- Android属性动画实战教程开篇
- Android属性动画实战教程中篇
- Android属性动画实战
- Android属性动画实战(一)
- Android动画之旅-开篇动画简介
- Android实战简易教程-第十七枪(LayoutAnimation布局动画)
- Android实战简易教程<十七>(LayoutAnimation布局动画)
- Android简易实战教程--第五十话《动画扫描》
- Android动画--属性动画
- android动画 -- 属性动画
- Android动画-属性动画
- Android动画【属性动画】
- Android动画--属性动画
- Android 动画实战
- android属性动画--布局动画
- Android 动画之属性动画
- Android中的动画,属性动画
- android-属性动画、视图动画
- 1维连续子数组和2维连续子数组的最大和
- Retrofit忽略Https安全验证
- iOS面试题汇总-----专辑
- sublime text 2 / 3 中文输入法
- Android里面的AutoCompleteTextView和MultiAutoCompleteTextView
- Android属性动画实战教程开篇
- Sonar 5.2 maven相关安装配置工作
- 目前比较流行的组合:Fragment+ViewPager
- python 例子: 实现动态加载类,并自动执行它定义的函数
- C 删除字符串中的字符
- Binder最关键的机制总结
- viewpager和fragment实现预加载和fragment的单一加载
- mybatis generator怎么使用?maven使用方法介绍
- Spring Boot 性能优化