短视频源码Android-alpha-渐变透明度 动画

XML 的定义方式

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:detachWallpaper="true"
    android:duration="1000"
    android:fillEnabled="true"
    android:fromAlpha="0.0"
    android:interpolator="@android:anim/bounce_interpolator"
    android:repeatCount="2"
    android:repeatMode="reverse"
    android:startOffset="300"
    android:toAlpha="1.0"
    android:zAdjustment="normal" >
 
    <!-- android:detachWallpaper="true" -->
    <!-- 设置动画是否在壁纸上运行 -->
 
 
    <!-- android:repeatMode="restart" 动画从头开始 -->
    <!-- android:repeatMode="reverse" 动画从结束开始 -->
    <!-- 设置动画的重复模式 -->
 
 
    <!-- android:repeatCount="" -->
    <!-- 设置动画开重复的次数 -->
 
 
    <!-- android:startOffset="300" -->
    <!-- 设置动画执行的时间间隔 -->
 
 
    <!--
		fillBefore是指动画结束时画面停留在此动画的第一帧; 默认值为true
		fillAfter是指动画结束是画面停留在此动画的最后一帧。默认值为false
		
		<set android:fillAfter="true" android:fillBefore="false">
		动画结束 停留在最后一帖 
		
		<set android:fillAfter="false" android:fillBefore="true">
		动画结束停留在第一帖 
    -->
 
 
    <!--
   		 动画的进度使用 Interpolator 控制。Interpolator 定义了动画的变化速度,
    	可以实现匀速、正加速、负加速、无规则变加速等。Interpolator 是基类,封装了所有 Interpolator 的共同方法,
    	它只有一个方法,即 getInterpolation (float input),
    -->
    <!-- android:fromAlpha="0.0" 动画的起始的透明度 -->
    <!-- android:toAlpha="1.0"  动画的结束时候的透明度 -->
 
 
    <!-- android:interpolator="@android:anim/bounce_interpolator" -->
    <!-- 动画结束的时候弹起 -->
 
 
    <!-- android:interpolator="@android:anim/anticipate_overshoot_interpolator" -->
    <!-- 开始的时候向后然后向前甩一定值后返回最后的值 -->
 
 
    <!-- android:interpolator="@android:anim/anticipate_interpolator" -->
    <!-- 开始的时候向后然后向前甩 -->
 
 
    <!-- android:interpolator="@android:anim/accelerate_interpolator" -->
    <!-- 在动画开始与结束的地方速率改变比较慢,在中间的时侯加速 -->
 
 
    <!-- android:interpolator="@android:anim/cycle_interpolator" -->
    <!-- 动画循环播放特定的次数,速率改变沿着正弦曲线 -->
 
 
    <!-- android:interpolator="@android:anim/decelerate_interpolator" -->
    <!-- 在动画开始的地方速率改变比较慢,然后开始减速 -->
 
 
    <!-- android:interpolator="@android:anim/linear_interpolator" -->
    <!-- 在动画的以均匀的速率改变 -->
 
 
    <!-- android:interpolator="@android:anim/linear_interpolator" -->
    <!-- 在动画的以均匀的速率改变 -->
 
</alpha>

在Java代码中使用Xml动画

//初始化渐变动画  
        Animation animation = AnimationUtils.loadAnimation(this, R.anim.alpha);  
        //设置动画监听器  
        animation.setAnimationListener(new AnimationListener() {  
              
            @Override  
            public void onAnimationStart(Animation animation) {  
                
                  
            }  
              
            @Override  
            public void onAnimationRepeat(Animation animation) {  
                // TODO Auto-generated method stub  
                  
            }  
              
            @Override  
            public void onAnimationEnd(Animation animation) {  
                //当监听到动画结束时,进行一些操作 
            }  
        });  
          
        //开始播放动画  (<span style="font-family: Arial, Helvetica, sans-serif;">rootView为播放动画的控件 </span><span style="font-family: Arial, Helvetica, sans-serif;">)</span>
        rootView.startAnimation(animation);

在java代码中实现渐变的透明动画

/**
 * 渐变透明动画的实现
 */
public AlphaAnimation getAlphaAnimotion() {
    /**
     * 创建 AlphaAnimation 对象 并指定透明渐变的范围
     */
    AlphaAnimation alphaAnimation = new AlphaAnimation(0.0f, 1.0f);
    /**
     * 设置动画执行的时间
     */
    alphaAnimation.setDuration(300);
    /**
     * 设置动画是否在壁纸上运行
     */
    alphaAnimation.setDetachWallpaper(false);
    /**
     * 设置动画执行完毕后所要停留的位置
     */
    alphaAnimation.setFillAfter(true);
    alphaAnimation.setFillEnabled(true);
    alphaAnimation.setFillBefore(true);
    /**
     * 设置动画为线性匀速执行
     */
    alphaAnimation.setInterpolator(new LinearInterpolator());

    /**
     * 设置动画执行重复的次数
     */
    alphaAnimation.setRepeatCount(2);
    /**
     * 设置动画执行重复的模式
     */
    alphaAnimation.setRepeatMode(Animation.RESTART);
    /**
     * 设置动画的执行时间间隔为3秒
     */
    alphaAnimation.setStartOffset(3000);

    /**
     * 设置动画开始的时间
     */

    alphaAnimation.setStartTime(3000);

    alphaAnimation.start();

    return alphaAnimation;

}
发布了151 篇原创文章 · 获赞 65 · 访问量 17万+

猜你喜欢

转载自blog.csdn.net/yb1314111/article/details/105363725