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;

    }





早起的年轻人 CSDN认证博客专家 移动开发 项目管理 Java
只要用心去做,每一件事情还是有可能成功的,当然成功是没有界限的,只不过是达到自己心里的那个目标,公众号:我的大前端生涯,一个爱喝茶的程序员,通常会搞搞SpringBoot 、Herbinate、Mybatiys、Android、iOS、Flutter、Vue、小程序等.
©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页