Android View分析(五)—— 动画介绍
动画分为三种
1、传统的平移类动画
只是改变控件的视觉效果,但是实际位置没有变动,主要使用的类是TranslateAnimation(平移)、ScaleAnimation(缩放)、RotateAnimation(旋转)、AlphaAnimation(透明度)
2、帧动画
多张图片播放,这种需要控制图片的大小,不然容易oom
3、属性动画
3.1 ObjectAnimator动画
改变整体控件的位置,类似于传统的平移动画效果,继承ValueAnimator类,对他的封装,主要使用ObjectAnimator类,使用时传入对应的参数即可修改,参数包括translationX、translationY、scaleX、scaleY、rotate、alpha。
ObjectAnimator animator = new ObjectAnimator(view,"translationX",0,1);
3.2 ValueAnimator动画
可以改变控件的某一个属性,比如可以修改控件的高,设置逐渐变高等效果。这个又涉及两个重要的类插值器TimeInterpolator
:控制动画运行的规律,主要是时间的控制,
比如匀速LinearInterpolator、动画加速AccelearteInterpolator、最后阶段弹球效果BounceInterpolator、周期运动CycleInterpolator、先加速在减速AccelerateDecelerateInterpolator
实现:实现TimeInterpolator接口,重写getInterpolation()方法,在里面实现我们想要的效果
下面的就是和系统的LinearInterpolator一样的效果
public class MyLinearInterpolator implements TimeInterpolator {
@Override
public float getInterpolation(float input) {
return input;//这里面设置input*0.1表示只能完成总体效果的10%,input*20表示能完成2000%的效果,也就是如果画圆,前者只能画36度,后者可以画7200度,这部分的原理是因为估值器的fraction就是根据这个方法获取的值
}
}
估值器TypeEvaluator
:控制动画的轨迹,某一刻的的最终效果
实现:实现TypeEvaluator接口,重写evaluate()方法
public class MyTypeEvluator implements TypeEvaluator<Float> {
/**
* fraction:表示动画完成度,据此计算当前动画的值
* startValue:动画初始值
* endValue:动画结束值
* @return
*/
@Override
public Float evaluate(float fraction, Float startValue, Float endValue) {
Float startInt = startValue;
return (startInt+fraction*(endValue-startValue))*0.2f; //设置只能达到设置效果的20%
}
}
PropertyValuesHolder:用来封装用户传入的属性和属性值
上一篇: 从零开始:优化代码之MultiTypeAdapter
下一篇: 圣诞雪花效果 雪花js
推荐阅读
-
Android进阶知识(十八):View动画、帧动画与View动画的特殊应用
-
Android View分析(五)—— 动画介绍
-
虾扯蛋:Android View动画 Animation不完全解析
-
Android 动画之补间动画(View Animation)
-
Android 动画详解:属性动画、View 动画和帧动画
-
Android Animation动画原理源码分析
-
Android动画分析详解(一) View动画、帧动画、LayoutAnimation、Activity切换动画
-
带你从源码一步步分析Android View面试中的事件分发流程
-
【Android界面实现】View Animation 使用介绍
-
Android--Animation动画介绍和实现