安卓动画总结
来源:互联网 发布:php objectaccess 编辑:程序博客网 时间:2024/06/08 17:43
安卓动画分类:补间动画,帧动画,属性动画
(注意:下面提到在xml中创建动画,均是在res下新建文件夹anim,之后在anim下创建xml文件,下面的代码都是模板)
补间动画:可以在xml或者代码中定义,有四种动画
在xml中节点 对应代码的类rotate:旋转 RotateAnimationtranslate:平移 TranslateAnimation scale:伸缩 ScaleAnimationalpha:渐变 AlphaAnimationset:动画集合 AnimationSet下面是在xml中的集合模板(float是对应float数值,在代码中使用AnimationUtils的loadAnimation方法调用):<?xml version="1.0" encoding="utf-8"?> <set xmlns:androidsetxmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@[package:]anim/interpolator_resource" android:shareInterpolator=["true" | "false"] ]]> <alpha android:fromAlpha="float" android:toAlpha="float"/> <scale android:fromXScale="float" android:toXScale="float" android:fromYScale="float" android:toYScale="float" android:pivotX="float" android:pivotY="float"/> <translate android:fromXDelta="float" android:toXDelta="float" android:fromYDelta="float" android:toYDelta="float"/> <rotate android:fromDegrees="float" android:toDegrees="float" android:pivotX="float" android:pivotY="float"/> </set>
帧动画:直接在xml中定义以animation-list为节点,item为一个动画时间点
<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot=["true" | "false"] > <item android:drawable="@[package:]drawable/drawable_resource_name" android:duration="integer" /> </animation-list>
属性动画:一般的有ObjectAnimator和ValueAnimator,集合的使用AnimatorSet, PropertyValuesHolder多属性动画管理器(同一个动画执行多个属性动画可以使用),可以在xml中定义(使用AnimatorInflater的loadAnimator方法在代码中调用),也可以在代码直接创建
Evaluators相关类解释: Evaluators就是属性动画系统如何去计算一个属性值。它们通过Animator提供的动画的起始和结束值去计算一个动画的属性值IntEvaluator:整数属性值。FloatEvaluator:浮点数属性值。ArgbEvaluator:十六进制color属性值。TypeEvaluator:用户自定义属性值接口,譬如对象属性值类型不是int、float、color类型,你必须实现这个接口去定义自己的数据类型。Interpolators相关类解释(可在xml中重新定义变换的速率):AccelerateDecelerateInterolator:先加速后减速。AccelerateInterpolator:加速。DecelerateInterpolator:减速。AnticipateInterpolator:先向相反方向改变一段再加速播放。AnticipateOvershootInterpolator:先向相反方向改变,再加速播放,会超出目标值然后缓慢移动至目标值,类似于弹簧回弹。BounceInterpolator:快到目标值时值会跳跃。CycleIinterpolator:动画循环一定次数,值的改变为一正弦函数:Math.sin(2 * mCycles * Math.PI * input)。LinearInterpolator:线性均匀改变。OvershottInterpolator:最后超出目标值然后缓慢改变到目标值。TimeInterpolator:一个允许自定义Interpolator的接口,以上都实现了该接口。代码实例:1.objectAnimator的使用:ObjectAnimator.ofFloat(view, "rotationY", 0.0f, 360.0f).setDuration(1000).start();2.PropertyValuesHolder 的使用:PropertyValuesHolder a1 = PropertyValuesHolder.ofFloat("alpha", 0f, 1f); PropertyValuesHolder a2 = PropertyValuesHolder.ofFloat("translationY", 0, viewWidth); ......ObjectAnimator.ofPropertyValuesHolder(view, a1, a2, ......).setDuration(1000).start();3.AnimatorSet的使用:ObjectAnimator a1 = ObjectAnimator.ofFloat(view, "alpha", 1.0f, 0f); ObjectAnimator a2 = ObjectAnimator.ofFloat(view, "translationY", 0f, viewWidth); ......AnimatorSet animSet = new AnimatorSet(); animSet.setDuration(5000); animSet.setInterpolator(new LinearInterpolator()); //animSet.playTogether(a1, a2, ...); //两个动画同时执行 animSet.play(a1).after(a2); //先后执行......//其他组合方式animSet.start();animSet执行的接方法:after(Animator anim) 将现有动画插入到传入的动画之后执行after(long delay) 将现有动画延迟指定毫秒后执行before(Animator anim) 将现有动画插入到传入的动画之前执行with(Animator anim) 将现有动画和传入的动画同时执行4.Evaluators的使用:ValueAnimator valueAnimator = new ValueAnimator();valueAnimator.setDuration(5000);valueAnimator.setObjectValues(new float[2]); //设置属性值类型valueAnimator.setInterpolator(new LinearInterpolator());valueAnimator.setEvaluator(new TypeEvaluator<float[]>() { @Override public float[] evaluate(float fraction, float[] startValue, float[] endValue) { //实现自定义规则计算的float[]类型的属性值 float[] temp = new float[2]; temp[0] = fraction * 2; temp[1] = (float)Math.random() * 10 * fraction; return temp; }});valueAnimator.start(); valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener(){@Overridepublic void onAnimationUpdate(ValueAnimator animation){ float[] xyPos = (float[]) animation.getAnimatedValue(); view.setHeight(xyPos[0]); //通过属性值设置View属性动画 view.setWidth(xyPos[1]); //通过属性值设置View属性动画}});5.插值器Interpolators的使用:<?xml version="1.0" encoding="utf-8"?> <InterpolatorName xmlns:android="http://schemas.android.com/apk/res/android" android:attribute_name="value" />
阅读全文
1 0
- 安卓动画总结
- 安卓动画总结
- 安卓动画总结
- 安卓动画总结
- 安卓动画(Animation)总结
- 安卓动画阶段总结
- 安卓属性动画的总结
- 安卓属性动画知识点总结
- 安卓动画知识总结 Animation AnimationSet LayoutAnimation
- Android开发之安卓属性动画大总结
- 安卓 动画帧动画基础动画
- 安卓开发-动画
- 安卓 动画效果
- 引导动画-安卓
- 安卓 动画效果
- 安卓属性动画
- 安卓齿轮动画
- 安卓-属性动画
- Android studio 创建sdk (jar和 aar) 的方法
- 观看基于vue的仿饿了么关于sticky footer布局
- SmartHome
- 认识bash shell
- Ubuntu 14.04 64bit 安装Caffe(GPU版本)
- 安卓动画总结
- STM32系统时钟默认设置
- 无线通信常见的种类--随笔记
- 在Activity与Fragment中分别如何使用ButterKnife
- 未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序。
- 最小的k个数
- 微信小程序周报(第十一期)-极乐商店出品
- Ubuntu Server源码编译安装Apache2
- ViewPager竖向滑动