动画分类:
概念
1:帧动画(Drawable)动画 ----》其实就是图片播放类似于git
2:View动画(Tween动画)-----》即状态A状态B的一个过程,我们称之为Tween,中间动画,包括平移,缩放,旋转,透明度四种基本动画。
3:属性动画(Property)------》属性动画,解决View动画的缺陷,给非View对象设置动画,真正的改变这个对象的属性来设置的动画
View动画和属性动画的区别 ----》
1:View动画并不会改变动画的属性值,只是改变了显示效果。Property动画会真正改变属性值
2: 动画资源放置的目录不同。View动画属性资源放在res/anim/filename , Property动画的属性资源放在res/animator/filename
帧动画:其实就是在xml里面配置图片动画资源,将图片进行一帧又一帧的播放。注意下可能出现的OOM异常就可以了
像手机里面的开机动画也是使用的帧动画
View动画(中间动画):在xml里面配置好资源后,通过AnimationUtil.loadAnimation() 即可下载动画,然后将动画设置给控件,那么基本的中间动画包括
1: AlphaAnimation(透明动画)
2:TranslateAnimation(平移动画)
3:ScaleAnimation(缩放动画)
4: RotateAnimation(旋转动画)
属性动画:通过改变对象的属性值,并且不断对动画的属性值进行操作,并将属性值赋值到对象上,从而得到对象动画。
要素以及连接关系分析
帧动画:
类AnimationDrawable, 函数 addFrame() ,动画资源drawableList 是基本要素要素
通过AnimationDrawable.addFrame(getResource().getDrawable(drawableList),200)将动画列表连接起来
View动画
类要素 Animation(抽象的) 具体实现有 :AlphaAnimation RotateAnimation ScaleAnimation TranslateAnimation AnimationSet
动画属性资源要素 : value/anim/animation_file
通过 Animation animation = AnimationUtiol.loadAnimation(contexxt,R.anim.animation_file) 将动画连接起来
属性动画
类要素 Animator (抽象的)具体实现:ValueAnimator 和 ObjectAnimator (ObjectAnimator extends ValueAnimator)
函数要素 :offFloat(Object object , String propertyName, float... values) ----》给某一个对象设置属性动画(比如alpha)动画从开始到结束的一个显示效果
setDuration(10000) 持续时间 ,start() 动画开启
连接方式:ObjectAnimator animator = ObjectAnimator.offFloatoffFloat(Object object , "alpha" 0f,1f)
animator.start() 开启动画
扩展:
1: 为了实现复杂的组合动画,我们可以使用 类 AnimationSet 这个要素
2: 为了 让动画在变化过程中,我们能根据动画的变化,做出一些提示,我们使用 插值器TimeInterpolator 和估值器 TypeEvaluator 这两个要素
3: 为了能监听动画状态,我们使用AnimatorUpdateListener 这个监听器
下面我么具体讲一下 插值器和估值器