Android动画专题之属性动画
来源:互联网 发布:不用网络的小说软件 编辑:程序博客网 时间:2024/05/24 02:50
专题介绍:专题准备
专题一:Android动画专题之逐帧动画
专题二:Android动画专题之补间动画
终于写到了最后的主角,前面的动画虽然也有效果,但是都有着自己的局限性。而今天就是强大的主角到来了!!!
正文开始
还是先来看看官网是如何介绍的(官网点击此处)
很长的一段介绍,但我们需要记住这个特征就好——可以对任何对象执行属性动画,可以定义任何属性的变化。
下面还介绍了我们在使用属性动画时应该定义的特性:
- Duration:这个应该很熟悉了,就是之前tweened animation中用到的动画持续时间。默认值是300ms。
- interpolation:这个词有的翻译成了加速器,又得说叫插值,我是直接记单词了,跟在使用tweened animation一样。
- 重复次数和行为:可以用来定义动画结束后是否重复(重复几次)和结束后的行为(从结束的那一帧开始倒着播放到第一帧还是怎样)
- 动画集合:使用一组属性动画,可以顺序播放,同时播放。
- 帧刷新频率:定义动画的帧多久刷新一次,默认是10ms。
介绍属性动画不可避免的要介绍下Animator这个框架,它就是3.0后推出的新的动画框架。可以简单的看下这个官网的介绍:
相关API介绍
Animators
- ValueAnimator:时间引擎,计算属性动画的值。使用它计算并监听值更新来更新相关对象的属性值。
- ObjectAnimator:属性动画中经常使用的一个类,它是ValueAnimator的子类。使用它对指定对象的属性执行动画。
- AnimatorSet:组合多个Animator,指定多个Animator的播放顺序。
Evaluators控制属性动画如何计算属性值。
Evaluators
- IntEvaluator:计算int类型的属性值
- FloatEvaluator:计算float类型的属性值
- ArgbEvaluator:计算十六进制形式的颜色值
- TypeEvaluator:实现该接口来自定义Evaluator。
介绍完了属性动画的知识,下面请看属性动画使用时的关键代码。
1.使用ValueAnimator
//ValueAnimator的使用 ValueAnimator animator = ValueAnimator.ofFloat(0,100); animator.setTarget(view); animator.setDuration(1000).start(); animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator valueAnimator) { //监听数值的变化,进而完成动画的变换 } });
注:动画的监听有着开始(start)、重复(Repeat)、结束(End)、和取消(Cancel)等几个过程,不过我们一般都只需要End过程:
//fadeAnim是一个ObjectAnimator对象 fadeAnim.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); //TODO 动画结束时需要做的处理 } });
2.使用ObjectAnimator动画
创建一个ObjectAnimator通过它的静态工厂类直接返回一个ObjectAnimator对象。参数包括对象和对象的属性名。要求属性必须有get和set函数。
//令一个button从不透明到透明 ObjectAnimator animator = ObjectAnimator.ofFloat(button,"alpha",1,0); animator.setDuration(2000); animator.start();
3.在XML中使用属性动画
在res目录下新建一个animator文件夹,在里面创建属性动画
<objectAnimator android:duration="2000" android:propertyName="alpha" android:valueFrom="1.0" android:valueTo="0.0"> </objectAnimator>
程序中使用XML定义的动画
Animator anim = AnimatorInflater.loadAnimator(this,R.animator.alpha_property);anim.setTarget(myObject);anim.start();
0 0
- Android动画专题之属性动画
- Android 动画之属性动画
- Android动画之属性动画
- Android动画之属性动画
- android 动画 之 属性动画
- Android动画之---属性动画
- Android动画之属性动画
- Android 动画之属性动画
- Android动画之属性动画
- Android动画之属性动画
- Android动画之属性动画
- Android动画之属性动画
- Android动画之属性动画
- Android动画专题之逐帧动画
- Android动画专题之补间动画
- android之属性动画
- android之属性动画
- Android之属性动画
- Linux下命令使用笔记
- MySQL中tinytext、text、mediumtext和longtext详解
- struts2之implements SessionAware, ServletRequestAware, ServletResponseAware原理分析
- 三种算法求最大公约数c语言
- Pandas 文本数据方法 get_dummies()
- Android动画专题之属性动画
- 树莓派学习笔记(1):入手树莓派
- 使用炫彩界面库完美实现窗口阴影效果
- clone()方法(浅复制、深复制)
- 我为什这么强烈而又坚定的推荐你做TPS云集品
- 题目1040:Prime Number
- 使用Gradle自动创建Java项目结构
- NIO
- linux 下的时间获取函数