首页 > 系统 > Android > 正文

android动画

2019-11-09 17:32:29
字体:
来源:转载
供稿:网友

android动画分为View动画 帧动画 属性动画

View动画

View动画包括平移,透明,缩放,旋转。用xml文件在res/anim创建 set标签做动画集合。interpolator插值器来改变动画是速度;shareInterpolator是否共享插值器。用duration改变动画时间,fillafter表示动画结束是否停留。最后通过AnimationUtils调用anim文件。可以setAnimationListerner添加动画监听。

自定义view动画

派生新动画只需要继承Animation重写initializeapplytransformation,在initialize做初始化工作,在applytransformation相应矩阵变换。使用Camera简单实现3D效果。

帧动画

系统提供AndroidDrawable类使用帧动画,xml可以在drawableanimation-list标签。注意避免图片过大引起OOM.LayoutAnimation作用于viewGroup,常备用于listview等。<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android" android:delay="30%" android:animationOrder="reverse" android:animation="@anim/slide_right"/>

android:delay表示动画播放的延时,既可以是百分比,也可以是float小数。 android:animationOrder表示动画的播放顺序,有三个取值normal(顺序)reverse(反序)random(随机)android:animation指向了子控件所要播放的动画 为ViewGroup指定android:layoutAnimation=”@anim/list_anim_layout”这样我们的listview的item就可以有出场动画了。


activity切换效果

overridePendingTransition(R.anim.zoomin, R.anim.zoomout)第一个参数是打开动画,第二个参数是暂停动画 淡入淡出的效果Android的包中已经提供了, overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); 左右滑动的效果Android的效果也提供了, overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right); fragment可以通过fragmentTrasactionsetCustomAnimation来切换动画。 注意必须startActvity或者finish后面调用

属性动画

属性动画可以对任意对象做动画,但是它是从API 11才有的,所以存在兼容性问题,可以考虑使用开源动画库nineoldandroids。常用动画类ValueAnimatorObjectAnimatorAnimatorset。属性android:repeatMode表示动画的重复模式,repeat表示连续重复播放,reverse表示逆向重复播放,也就是第一次播放完后第二次倒着播放动画,第三次还是重头开始播放动画,第四次再倒着播放。porpertyName属性名称,假如指定了是color,不需要指定valuetype。插值器和估值器:属性动画实现非匀速动画的重要手段 时间插值器TimeInterpolator的作用是根据时间流逝的百分比计算出当前属性值改变的百分比,系统内置的插值器有线性插值器LinearInterpolator、加速减速插值器AccelerateDecelerateInterpolator和减速插值器DecelerateInterpolator。 类型估值器(TypeEvaluator)的作用是根据当前属性改变的百分比计算出改变后的属性值,系统内置的估值器有IntEvaluatorFloatEvaluatorArgbEvaluator。动画监听器 AnimatorListener:监听动画的开始、结束、取消以及重复播放; AnimatorUpdateListener监听动画的整个过程,动画每播放一帧的时候onAnimationUpdate方法就会被回调一次属性动画的工作原理:属性动画需要运行在有Looper的线程中,反射调用get/set方法。对任意属性做动画的方法:用一个类封装原始对象或者ValueAnimator使用动画的注意事项 1)属性动画中的无限循环动画需要在Activity退出的时候及时停止,否则将导致Activity无法释放而造成内存泄露。view动画不存在这个问题;2)view动画的问题:view动画是对view的影像做动画,并不是真正的改变view的状态,因此有时候动画完成之后view无法隐藏,即setVisibility(View.GONE)失效了,此时需要调用view.clearAnimation()清除view动画才行;3)不要使用px;
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表