公司网站能否申请国外免费空间,国家正规现货交易平台,WordPress突然全站404,阿里云主机上传网站动画分为三种#xff1a;View动画、帧动画和属性动画View动画View动画共有四种动画#xff1a;TranslateAnimation、RotateAnimation、ScaleAnimation和AlphaAnimation。四个动画类都继承于抽象类Animation。名称标签子类效果平移动画TranslateAnimation移动View缩放动画Scal…动画分为三种View动画、帧动画和属性动画View动画View动画共有四种动画TranslateAnimation、RotateAnimation、ScaleAnimation和AlphaAnimation。四个动画类都继承于抽象类Animation。名称标签子类效果平移动画TranslateAnimation移动View缩放动画ScaleAnimation放大或缩小View旋转动画RotateAnimation旋转View透明度动画AlphaAnimation改变View的透明度View动画既可以在xml中定义也可以在代码中实现。除了以前四种动画外还有个动画集合类AnimationSet它主要是可以将一系列动画按一定的顺序连续播放。TranslateAnimationTranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)fromXDelta水平方向上x的初始值toXDelta水平方向上x的结束值fromYDelta垂直方向上y的初始值toYDelta垂直方向上y的结束值RotateAnimationRotateAnimation(float fromDegrees, float toDegrees, float pivotX, float pivotY)fromDegrees旋转开始的角度toDegrees旋转最终的角度pivotX旋转的轴心坐标xpivotY旋转的轴心坐标y不周的旋转轴心旋转动画效果不一样如果构造函数不传旋转的轴心坐标轴心默认是View左上角的顶点。ScaleAnimationScaleAnimation(float fromX, float toX, float fromY, float toY,float pivotX, float pivotY)fromX水平方向上缩放的初始值toX水平方向上缩放的结束值fromY垂直方向上缩放的初始值toY垂直方向上缩放的结束值pivotX缩放的轴心坐标xpivotY缩放的轴心坐标y如果水平方向和垂直方向放大一倍如果缩放的轴心是View的中心则水平方向左右各放大0.5倍垂直方向上下各放大0.5倍如果缩放的轴心是左上角的顶点则水平方向往右放大一倍垂直方向往下放大一倍。AlphaAnimationAlphaAnimation(float fromAlpha, float toAlpha)fromAlpha透明度初始值toAlpha透明度最终值示例代码TranslateAnimation translateAnimation new TranslateAnimation(0,100,0,100);translateAnimation.setDuration(3000); //设置时长为3秒translateAnimation.setFillAfter(true); //设置view停留在动画结束的位置mTestView.startAnimation(translateAnimation);xml//res/anim/translate.xmlandroid:fromXDelta0android:toXDelta100android:fromYDelta0android:toYDelta0/setFillAfter(boolean fillAfter)动画结束后view是否停留在动画结束的位置如果不设置默认为falseAnimationSetAnimationSet(boolean shareInterpolator)shareInterpolator表示集合中的动画和集合是否共用一个插值器AnimationSet animationSet new AnimationSet(false);animationSet.addAnimation(translateAnimation());animationSet.addAnimation(alpaAnimation());animationSet.addAnimation(scaleAnimation());animationSet.setDuration(6000);mTestView.startAnimation(animationSet);AnimationListener监听动画接口translateAnimation.setAnimationListener(new Animation.AnimationListener() {Overridepublic void onAnimationStart(Animation animation) {// 动画开始前的回调}Overridepublic void onAnimationEnd(Animation animation) {// 动画结束后的回调}Overridepublic void onAnimationRepeat(Animation animation) {// 动画循环播放的回调}});自定义View动画View动画继承于抽象类Animation自定义View动画需要继承抽象类Animation并且重写initialize和applyTransformation方法。View动画特殊使用LayoutAnimationLayoutAnimation作用于ViewGroup当ViewGroup子元素显示时会增加一个出场动画。Activity的切换动画void overridePendingTransition(int enterAnim, int exitAnim)帧动画帧动画是顺序播放一组预先定义好的图片主要用到AnimationDrawable来定义帧动画。//res/drawable/voic_animation_listandroid:oneshotfalseAnimationDrawable animationDrawable (AnimationDrawable)ContextCompat.getDrawable(this,R.drawable.voice_animation_list);mImageView.setImageDrawable(animationDrawable);animationDrawable.start();可以不使用xml定义动画帧列表通过AnimationDrawable的addFrame()方法逐个添加图片。addFrame(NonNull Drawable frame, int duration)属性动画属性动画作用的对象不仅是View还可以是其他对象。属性动画主要是在一段时间内使对象其中一个属性值发生变化。主要的类有Animator、ValueAnimator、ObjectAnimator、AnimatorSet等。类关系图animator.png示例代码ValueAnimator colorAnim ObjectAnimator.ofInt(mTestView,backgroundColor,0xFFFF8080,0xFF8080FF); // 改变mTestView的背景色属性值colorAnim.setDuration(3000); // 设置时长colorAnim.setEvaluator(new ArgbEvaluator()); // 设置插值器colorAnim.setRepeatCount(ValueAnimator.INFINITE); // 设置播放次数INFINITE -1,-1时无限播放colorAnim.setRepeatMode(ValueAnimator.REVERSE); // 设置重复播放的模式反转播放colorAnim.start();......// 动画集合播放AnimatorSet animatorSet new AnimatorSet();animatorSet.playTogether(colorAnim,...);animatorSet.start();xml// res/animator/color_animatorandroid:orderingsequentiallyandroid:propertyNamebackgroundColorandroid:duration3000android:valueFrom0xFFFF8080android:valueTo0xFF8080FFandroid:repeatCountinfiniteandroid:repeatModereverseandroid:valueTypeintType /AnimatorInflater.loadAnimator(this,R.animator.color_animator);字段名说明ObjectAnimator ofInt(Object target, String propertyName, int... values)target作用的对象。propertyName : 对象中的属性名至少实现属性的set()方法get()方法可以提供默认初始值。values : 属性变化值如果传一个参数表示结束值两个或以上多个参数第一个参数是初始值第二个参数及后面的参数是中间值或结束值。View常见的属性名(propertyName)属性名作用rotationX绕着水平中心旋转rotationY绕着垂直中心旋转rotation绕着正中心旋转translationX水平方向平移translationY垂直方向平移scaleX水平方向缩放scaleY垂直方向缩放alpha透明度AnimationListener属性动画监听器主要接口和类AnimatorListener,AnimatorListenerAdapter、AnimatorUpdateListener,AnimatorPauseListener。mObjectAnimator.addListener(new Animator.AnimatorListener() {Overridepublic void onAnimationStart(Animator animation) {}Overridepublic void onAnimationEnd(Animator animation) {}Overridepublic void onAnimationCancel(Animator animation) {}Overridepublic void onAnimationRepeat(Animator animation) {}});animatorListener.png插值器插值器的作用是根据时间流逝的百分比来计算属性值变化的百分比常用插值器名称作用LinearInterpolator动画以均匀的速度改变AccelerateInterpolator在动画开始的地方改变速度较慢然后开始加速AccelerateDecelerateInterpolato在动画开始、结束的地方改变速度较慢中间时加速CycleInterpolator动画循环播放特定次数变化速度按正弦曲线改变 Math.sin(2 mCycles Math.PI * input)DecelerateInterpolato在动画开始的地方改变速度较快然后开始减速AnticipateInterpolator反向先向相反方向改变一段再加速播放AnticipateOvershootInterpolator开始的时候向后然后向前甩一定值后返回最后的值BounceInterpolator跳跃快到目的值时值会跳跃如目的值100后面的值可能依次为8577708090100OvershottInterpolator回弹最后超出目的值然后缓慢改变到目的值估值器估值器的作用是将插值器计算出来的属性变化百分比来计算变化后的属性值常见的估值器名称作用IntEvaluator用于计算int属性FloatEvaluator用于计算float属性ArgbEvaluator用于计算16进制表示颜色值的计算器TypeEvaluator上述计算类的公共接口可以自己实现接口完成自定义。使用动画的注意事项摘自Android开发艺术探索帧动画容易出现OOM问题。属性动画中如果是无限循环的动画需要在Activity退出时及时停止否则造成内存泄露而View动画不存在此问题。View动画是对View的影像做动画并不是真正改变View的状态。有时候出现动画完成后View无法隐藏的问题调用view.clearAnimation()清除动画即可解决问题。动画移动View后view单击区域的区别在于属性动画可在移动后的位置触发单击事件而View动画仍然在原位置。动画工具类根据常用的动画操作封装成可方便调用的代码工具类动画工具类