当前位置: 代码迷 >> 综合 >> TweenAnimation 的详解
  详细解决方案

TweenAnimation 的详解

热度:48   发布时间:2023-09-18 11:44:59.0

res/anim  用于动画设置 根节点为 set , xml 文件中的配置:



   TweenAnimation 补间动画 :alpha 渐变透明 scale 缩放  rotate 旋转 translate  上下左右移动

           alpha:  取值0.0 ----1.0  float  类型   持续时间单位为毫秒



<!--AlphaAnimation(float fromAlpha, …)  动画开始的透明度(0.0到1.0,0.0是全透明,1.0是不透明)
AlphaAnimation(…, float toAlpha)   动画结束的透明度,同上-->
<!--setDuration(long)  动画持续时间,毫秒为单位-->
<!--setRepeatCount(int)    重复次数-->
<!-- setRepeatMode(int)    重复类型有两个值,reverse表示倒序回放,restart表示从头播放-->
<!--setStartOffset(long)   调用start函数之后等待开始运行的时间,单位为毫秒-->
<!--setDetachWallpaper(boolean)    是否在壁纸上运行-->
<!--setFillAfter(boolean)  控件动画结束时是否保持动画最后的状态-->
<!--setFillBefore(boolean) 控件动画结束时是否还原到开始动画前的状态-->
<!--setFillEnabled(boolean)    与android:fillBefore效果相同-->
<!--setZAdjustment(int)    表示被设置动画的内容运行时在Z轴上的位置(top/bottom/normal),默认为normal-->
<!--setInterpolator(Interpolator)  设定插值器(指定的动画效果,譬如回弹等)-->

<alpha
    android:detachWallpaper="true"
    android:duration="3000"
    android:fillAfter="true"
    android:fillBefore="true"
    android:fillEnabled="true"
    android:fromAlpha="0"
    android:repeatCount="infinite"
    android:repeatMode="reverse"
    android:startOffset="3000"
    android:toAlpha="1"
    android:zAdjustment="top"
    android:interpolator="@android:anim/accelerate_decelerate_interpolator"
/>

Interpolator的介绍

AccelerateDecelerateInterpolator 在动画开始与介绍的地方速率改变比较慢,在中间的时候加速
AccelerateInterpolator 在动画开始的地方速率改变比较慢,然后开始加速
CycleInterpolator 动画循环播放特定的次数,速率改变沿着正弦曲线
DecelerateInterpolator 在动画开始的地方速率改变比较慢,然后开始减速
LinearInterpolator 在动画的以均匀的速率改变


<rotate
    android:duration="3000"
    android:fromDegrees="0"//动画开始时的角度
    android:pivotX="50%"//x轴的中点  取值为0%--100%
    android:pivotY="50%"//y轴的中点   同上    android:toDegrees="360" //动画结束时的角度
    />
当角度为负数——表示逆时针旋转
当角度为正数——表示顺时针旋转
(负数from——to正数:顺时针旋转)
(负数from——to负数:逆时针旋转)
(正数from——to正数:顺时针旋转)
(正数from——to负数:逆时针旋转)


<scale
    android:duration="3000"
    android:fromXScale="0.2"//x轴开始时伸缩尺寸 float 值
    android:fromYScale="0.2"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toXScale="1.0"//x轴结束时伸缩尺寸
    android:toYScale="1.0" 
    /> 0.0表示收缩到没有
1.0表示正常无伸缩
值小于1.0表示收缩
值大于1.0表示放大


<translate
    android:fromXDelta="0"//x轴开始时的坐标
    android:toXDelta="100%"//x轴的最大值
    android:fromYDelta="0"
    android:toYDelta="100%"
    android:duration="5000"
    />

如何在代码中引入xml中定义的动画


  AnimationSet  set = new AnimationSet(false);//将所有动画整合
    set.addAnimation(AnimationUtils.loadAnimation(this, R.anim.alpha));
    set.addAnimation(AnimationUtils.loadAnimation(this, R.anim.scale));
    set.addAnimation(AnimationUtils.loadAnimation(this, R.anim.rotate));
    set.setAnimationListener(new Animation.AnimationListener() {@Override
        public void onAnimationStart(Animation animation) {//动画开始}@Override
        public void onAnimationEnd(Animation animation) {//动画结束}@Override
        public void onAnimationRepeat(Animation animation) {//动画重复}});
    ImageView imageView = (ImageView) findViewById(R.id.iv_welcome);
    imageView.startAnimation(set);

}







  相关解决方案