Android——Animation

Android中的动画:

一、分类:TweenAnimation(补间动画)和FrameAnimation(帧动画)。

  1. TweenAnimation,通过对图像不断做变换产生动画效果,是一种渐变效果;

    AlphaAnimation:透明度渐变;

    ScaleAnimation:尺寸缩放;

    TranslateAnimation:移动

    RotateAnimation:旋转

  2. FrameAnimation:顺序播放事先做好的图像是一种转换动画;

二、属性简介:

  1. TweenAnimation共同属性:

android:duration [long] :动画持续的时间;

android:fillAfter [boolean]:视图停在动画结束的位置,但是真正的位置仍然是布局中给定位置;

android:fillBefore[boolean]:视图停在动画开始的位置;

android:interpolator :指定一个动画的插入器,常用的插入器有:

    accelerater_decelerate_interpolator:加速-减速 动画插入器

    accelerater_interpolator:加速动画插入器;

    deceleratr_interpolator:减速动画插入器;

android:repeatCount[int]:动画重复次数,-1表示无限循环;

android:repeatMode[int]:定义动画重复的行为,1,从起点重新开始;2,从结束位置开始相反执行;

android:startOffset[long]:动画之间的时间间隔,从上次动画停多少时间开始执行下个动画;

android:zAdjustment[int]:定义动画的Z order的改变,0:保持Z Order不变;1:保持在最上层;-1保持在最下层;(????待验证)

1.1 AlphaAnimation

xml中定义

<!-- 	<alpha android:fromAlpha="" 开始时的透明度,0.0-1.0 -->
<!-- 	    android:toAlpha="" 结束时的透明度 0.0-1.0 -->
<!-- 	    android:duration="" 动画持续的时间 /> -->

代码中定义:

//fromAlpha:开始时的透明度,toAlpha:结束时的透明度
		AlphaAnimation alpha = new AlphaAnimation(fromAlpha, toAlpha);
		//设置动画持续的时间
		alpha.setDuration(durationMillis);

1.2 ScaleAnimation

xml

<!-- <scale  -->
<!--     android:fromXScale="" 动画起始时X坐标上的伸缩尺寸-->
<!--     android:toXScale="" 动画结束时X坐标上的伸缩尺寸-->
<!--     android:fromYScale="" 动画起始时Y轴上的伸缩尺寸-->
<!--     android:toYScale="" 动画结束时Y轴上的伸缩尺寸-->
<!--     android:pivotX="" 动画相对于物件的X坐标的开始位置-->
<!--     android:pivotY="" 动画相对与物件Y坐标的开始位置-->
<!--     /> -->

代码中

ScaleAnimation scale = new ScaleAnimation(fromX, toX, fromY, toY);

1.3 TranslateAnimation

xml

    <translate
        android:fromXDelta="0%" //x轴起始位置
        android:pivotX="0%" //动画相对于物件X坐标的开始位置
        android:pivotY="0%"//动画相对于物件Y坐标的开始位置
        android:toXDelta="30%" //x轴的结束位置
        android:fromYDelta="0%" //y轴起始位置
        android:toYDelta="0%" //y轴结束位置
        android:duration="10000"/>

代码中:

TranslateAnimation anim = new TranslateAnimation(fromXDelta, toXDelta, fromYDelta, toYDelta)

1.4 RotateAnimation

xml

    <!-- <rotate -->
    <!-- android:fromDegrees="" 动画起始时物件的角度 -->
    <!-- android:toDegrees="" 动画结束时物件旋转的角度 -->
    <!-- 角度为负表示逆时针旋转,角度为正表示顺时针旋转 -->
    <!-- android:pivotX="" 动画相对于物件X坐标的开始位置 -->
    <!-- android:pivotY="" 动画相对与物件Y坐标的开始位置 -->
    <!-- android:duration="" 动画运行时间/> -->

代码:

		ScaleAnimation anim = new ScaleAnimation(fromX, toX, fromY, toY)

2.xml定义动画在activity中的使用:

Animation animation = (Animation) AnimationUtils.loadAnimation(MainActivity.this, R.anim.animation);

3.插值器的使用

Interpolator对象资源ID功能作用
AccelerateDecelerateInterpolator@android:anim/accelerate_decelerate_interpolator先加速再减速
AccelerateInterpolator@android:anim/accelerate_interpolator加速
AnticipateInterpolator@android:anim/anticipate_interpolator先回退一小步然后加速前进
AnticipateOvershootInterpolator@android:anim/anticipate_overshoot_interpolator在上一个基础上超出终点一小步再回到终点
BounceInterpolator@android:anim/bounce_interpolator最后阶段弹球效果
CycleInterpolator@android:anim/cycle_interpolator周期运动
DecelerateInterpolator@android:anim/decelerate_interpolator减速
LinearInterpolator@android:anim/linear_interpolator匀速
OvershootInterpolator@android:anim/overshoot_interpolator快速到达终点并超出一小步最后回到终点

4.FrameAnimation:帧动画

添加图片,按照添加图片的顺序播放;

		AnimationDrawable anima = new AnimationDrawable();
		anima.addFrame(drawable1, duration1);
		anima.addFrame(drawable2, duration2);
		anima.addFrame(drawable3, duration3);
		anima.addFrame(drawable4, duration4);
		view.setBackgroudDrawable(anima);


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。