文章目录
Android
1 动画处理
动画的意义:视觉效果,引导动画
Android动画有 三种: View动画、帧动画、属性动画
Tween (补间动画),即View动画, 包括了平移(Translate)、缩放(Scale)、 旋转(Rotate)、透明度(Alpha);
Frame (帧动画)循序播放一组预先定义好的图片;
属性动画(Property Animation)类名是: ValueAnimator、 ObjectAnimator;
1.1 逐帧动画
图片动画
➢AnimationDrawable
➢< animation-list>
demo:
布局文件loading.xml,一帧就是一张图片
布局文件activity_frame_animation.xml
动画演示一遍:
animationDrawable.setOneShot(true);
也可以在xml中添加属性< animation-list android:oneshot=“true” xmlns:android=""…>
1.2 视图动画
➢android.view.animation
➢Animation
●< alpha> AlphaAnimation
透明度变化的动画demo
alpha.xml
activity_view_animation.xml
ViewAnimationActivity.java
透明度1.0表示完全不透明,0表示完全透明。
●< scale>ScaleAnimation
类似于透明度的写法,这是布局文件scale.xml
android:duration=“1000”:表示拉伸的时间是1000ms,不设置的话,默认是300ms
android:fillAfter=“true”:表示保持拉伸后的状态
android:pivotX=“50%”
android:pivotY=“50%”:表示拉伸的基准点在中心
android:pivotX=“20%p”:表示基准点的x轴相对于父控件的20%
●< translate>TranslateAnimation
translate.xml
将上述的条件X终点改为android:toXDelta=“50%p”,相对于父控件的50%距离,如果超出父控件大小,是看不到动画效果的。
android:repeatCount=“1”:表示平移次数,2次的话就是快速回到起点,再移动一次
android:repeatCount=“infinite”:表示平移无数次
android:repeatMode=“reverse”:表示原路返回至原点
●< rotate>RotateAnimation
rotate.xml
android:toDegress=“360”:表示旋转360度
android:pivotX=“50%”
android:pivotY=“50%”:表示旋转基准点在中心
android:repeatCount=“3”:表示旋转次数
android:repeatCount=“infinite”:表示旋转无数次
添加一个按钮重建Activity
drawable右键New,VectorAsset,选择icon
menu新建资源文件renew.xml
在Activity重写函数,点击右上角,就可以重建activity,重复演示动画
●< set>AnimationSet
集合动画
布局文件set.xml
插值器Interpolator
设置变化速率,之前没有设置都是线性变化的。
布局文件中写两个View,写点击事件:
动画时长有不同的取值:
1.3 属性动画
视图动画VS属性动画
操作对象:视图动画只能操作视图View对象;任意对象
属性:视图并没有改变它是视图的属性;真正改变属性
总之,属性动画更为强大。
动画属性:时长,时间插值器,重复次数,重复模式,动画集,延迟
➢android.animation
Animator
●ValueAnimator
●ViewPropertyAnimator
●AnimatorSet
方案2,旋转的同时平移:
view.animate().rotation(720). setDuration(1000). start();
view.animate(). translationX(500).setDuration(1000).start();
先旋转后位移:
view.animate().rotation(720).setDuration(1000).start() ;
view.animate().translationX(500).setDuration(1000).setStartDelay(1000).start();
2 转场动画
作用:视觉连续性,好处:吸引用户注意力,合理控制用户聚焦点,引导用户
视觉状态改变:单个视图,布局,activity跳转
揭露动画:
Animator animator = ViewAnimationUtils.createCircularReveal(mView,cx,cy,0,r);
揭露效果:View状态改变
多视图的转场动画
Activity的转场动画
android.transition
Scene
Transition
TransitionManager
Scene
Scene.getSceneForLayout(sceneRoot, R.layout.scene_overview,this);
Transition
Fade
ChangeBounds
AutoTransition
TransitionInflater.from(getBaseContext()).inflateTransition(R.transition.transition);
TransationManager.go(mTargetScene, transation);