Android属性动画的使用(上)
来源:互联网 发布:linux怎么打开found 编辑:程序博客网 时间:2024/06/15 00:17
前言:
安卓里面由于补间动画,只是变化的是视图的位置,但是属性的话,是没有变的,就是以前大家在使用动画的时候,如果在tagView(目标视图)上设置了监听事件,但是,当tagView在移动的时候,点击事件还在原位置,这样很不方便,后面在API3.0以后就新增了属性动画,很好的解决了以上问题,而且新增的功能还可以扩展很多的动画效果,下面就先来说说ValueAnimator的重要性
分析:
动画,简单来说就是在一段时间里面进行一系列视图的变化,也就是必须有一定的过程,在数学里面也是就时间段,而不是时间刻,(小装个逼,嘻嘻!)
一、ValueAnimator(非常重要的):
1.首先ValueAnimator继承于父类的Animator,而它的实现子类ObjectAnimator以及TimeAnimator,暂时这里先不说这两个子类
2.学习新的类,肯定要先了解其API的使用:
ValueAnimator valueAnimator = ValueAnimator.ofInt(0, 1); valueAnimator.setEvaluator();//设置评估者 valueAnimator.setRepeatCount();//设置动画重复的次数 valueAnimator.setInterpolator();//设置动画的插值器;也就是动画如何变化,就像速度的描述加速度一样 valueAnimator.setDuration();//动画的时间 valueAnimator.setStartDelay();//动画在开始之前延迟多少 valueAnimator.setRepeatMode();//动画重复的方式;RESTART:开始-结束 开始-结束;REVERSE:开始-结束-开始 valueAnimator.addListener();//动画的监听 valueAnimator.addUpdateListener();//动画属性值更新的监听
二、ValueAnimator的重要使用:
1.setEvaluator()的方法:
public class IntEvaluator implements TypeEvaluator<Integer> {public Integer evaluate(float fraction, Integer startValue, Integer endValue) {int startInt = startValue;return (int)(startInt + fraction * (endValue - startInt)); }}
里面有三个参数:
- fraction:这个值是由插值器返回的一个百分比的数值,范围0~1之间
- startValue:起始值
- endValue:结束值
这个评估者的类里面就是返回一个一直在叠加的值,也就是一段时间里面变化的值,如果能得到这个值,是不是很多的动画效果就迎刃而解了,因为View变化的时候,其实就是时期位置在一段时间里面不断的变化,当间隔小于肉眼所感知的峥,就认为是在动
2.addUpdateListener();这个方法就是监听动画在动的过程中的回调,那么这里面应该有我们想要的东西
valueAnimator.addUpdateListener(newValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { Object animatedValue = animation.getAnimatedValue();//这个不正式我们上面传的 值吗 //在这里面我们是不是可以设置View的透明度,平移,旋转,以及放大,其实一段时间里面这还可以变换颜色 } });
3.当然颜色变换的评估者系统已经给大家定义好了:
public class ArgbEvaluator implements TypeEvaluator { public Object evaluate(float fraction, Object startValue, Object endValue) { int startInt = (Integer) startValue; int startA = (startInt >> 24); int startR = (startInt >> 16) & 0xff; int startG = (startInt >> 8) & 0xff; int startB = startInt & 0xff; int endInt = (Integer) endValue; int endA = (endInt >> 24); int endR = (endInt >> 16) & 0xff; int endG = (endInt >> 8) & 0xff; int endB = endInt & 0xff; return (int)((startA + (int)(fraction * (endA - startA))) << 24) | (int)((startR + (int)(fraction * (endR - startR))) << 16) | (int)((startG + (int)(fraction * (endG - startG))) << 8) | (int)((startB + (int)(fraction * (endB - startB)))); }}
大家要做变背景色的效果是不是很简单就可以实现
总结:有时候大家可能对一些动画可能很没有头绪,也可能是一些属性变化没有什么头绪,希望鄙人上面所讲的会对你有更大的帮助,你只要知道了思想才可能,应对更对的可能
注意:因为属性动画是API3.0以后的属性;所以在GitHub有大神给出来兼容的属性动画:只要在AS里面依赖:
compile ‘com.nineoldandroids:library:2.4.0’
- Android属性动画的使用(上)
- Android动画之属性动画(上)
- Android(第三种动画)属性动画完全解析(上),初识属性动画的基本用法
- android属性动画的使用
- Android 属性动画的使用
- Android动画的使用(二):属性动画
- Android属性动画详解(上),初始属性动画的基本用法
- (转载)Android属性动画完全解析(上),初识属性动画的基本用法
- Android学会属性动画的基本用法(上)
- (属性动画)Android属性动画完全解析(上),初识属性动画的基本用法
- 属性动画上(属性动画的一般用法)
- Android动画详解(二)属性动画完全解析(上)
- Android属性动画优化(更高效的使用属性动画)
- Android属性动画优化(更高效的使用属性动画)
- 属性动画(上)
- android 属性动画使用
- android 属性动画使用
- android 属性动画 AnimatorSet的使用
- Maven之(八)约定优于配置
- 初学 python
- 安装MySQL出现 Install/Remove of the Service Denied!
- Linux常用命令
- SSM框架基础配置
- Android属性动画的使用(上)
- Java中的String类
- 浅谈C++作用域运算符::
- ViewPager
- 哈夫曼编码效果最优的原因
- Kingdom Roadmap UVA
- Nexus3配合Gradle搭建私有仓库
- 第二章 变量和基本类型
- 手把手教你配置mac下最牛X的命令行工具:iTerm2+oh-my-zsh(2018年)