如何通过android实现alpha渐变动画效果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过android实现alpha渐变动画效果相关的知识,希望对你有一定的参考价值。

android动画分为四种:alpha(渐变透明度),scale(渐变尺寸伸缩),translate(画面转换位置移动),rotate(画面转移旋转);今天先写第一个动画alpha。
动画效果有两种实现:
一、在xml中定义:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 透明度控制动画效果 alpha
浮点型值:
fromAlpha 属性为动画起始时透明度
toAlpha 属性为动画结束时透明度
说明:
0.0表示完全透明
1.0表示完全不透明
以上值取0.0-1.0之间的float数据类型的数字

长整型值:
duration 属性为动画持续时间
说明:
时间以毫秒为单位
-->

<alpha
android:fromAlpha="0.1"
android:toAlpha="1.0"
android:duration="5000"
/>

</set>
二、在页面Activity中声明:
Animation animation = new AlphaAnimation(0.1f, 1.0f);
animation.setDuration(5000);

完成动画渐变透明度的参数设定后,我们就要开始在应用中使用它:
public class SplashActivity extends Activity

@Override
protected void onCreate(Bundle savedInstanceState)
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.welcome);

View view = View.inflate(SplashActivity.this, R.layout.welcome, null);
setContentView(view);
//动画效果参数直接定义
Animation animation = new AlphaAnimation(0.1f, 1.0f);
animation.setDuration(5000);

//动画效果从XMl文件中定义
// Animation animation = AnimationUtils.loadAnimation(this, R.anim.alpha);
view.setAnimation(animation);


这样我们就完成了预定的动画效果,但是我们的最终目的是动画效果完毕以后跳转到相应的页面,所以我们对动画添加了监听:
animation.setAnimationListener(new AnimationListener()

@Override
public void onAnimationStart(Animation animation)
// TODO Auto-generated method stub



@Override
public void onAnimationRepeat(Animation animation)
// TODO Auto-generated method stub



@Override
public void onAnimationEnd(Animation animation)
// TODO Auto-generated method stub
Intent intent = new Intent(SplashActivity.this,MainActivity.class);
startActivity(intent);

);
这样的话,我们在动画的持续时间中预加载我们的资源,当动画结束以后跳转到我们的主页面;
详细步骤和完整源码可以参考:http://www.cnblogs.com/sishuiliuyun/p/3167581.html
参考技术A public void startAlphaAnimation()

mRoomBgView.setVisibility(View.VISIBLE);
//由不透明到全透明。
final AlphaAnimation alphaAnimation = new AlphaAnimation(1.0F, 0.0F);
//设置动画持续时长
alphaAnimation.setDuration(1000);
//true,动画结束后,保持动画结束时的最终状态
alphaAnimation.setFillAfter(true);
//true,动画结束后,保持动画开始时的状态
alphaAnimation.setFillBefore(false);
//设置动画播放次数,如果只播放一次,设置为0
alphaAnimation.setRepeatCount(0);
//开始动画
mRoomBgView.startAnimation(alphaAnimation);

//设置一个,结束时一般要做点事情。
alphaAnimation.setAnimationListener(new Animation.AnimationListener()

@Override
public void onAnimationStart(Animation animation)



@Override
public void onAnimationRepeat(Animation animation)



@Override
public void onAnimationEnd(Animation animation)

mRoomBgView.setVisibility(View.GONE);
mRoomBgView.clearAnimation();
alphaAnimation.cancel();

);

Android通过Alpha实现渐变效果的几个方法


原理 : 通过改变控制透明度的Alpha值来实现渐变效果


方法一 : 使用XML

    步骤一 : 首先,我们要在res文件夹下的anim文件夹里创建一个.xml文件(这里我创建的是alpha.xml)

    设置开始时透明度为0.0(透明):android:fromAlpha="0.0"

    设置结束时透明度1.0(不透明):android:toAlpha="1.0"


                        

    <alpha

    xmlns:android="http://schemas.android.com/apk/res/android"

    android:fromAlpha="0.0"

    android:toAlpha="1.0"

    android:duration="2000">

    </alpha>


    步骤二 : 接下来就要使用Animation类来实现效果了


    @Override

    protected void onCreate(Bundle savedInstanceState)

    {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);


ImageView but=(ImageView)findViewById(R.id.mainButton);


Animation mAnimation = AnimationUtils.loadAnimation(this, R.anim.alpha); 

but.startAnimation(mAnimation);

    }


方法二 : 使用Paint类

    方法 : 通过Paint.setAlpha();改变图的Alpha值


     

public class MainActivity extends Activity implements OnTouchListener{

     Paint paint=new Paint();

     

     //设置初始Alpha为100(不透明)

     int al=100;


   

@Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

setContentView(new RenderView(this));

    }


    class RenderView extends View {

       

        protected void onDraw(Canvas canvas){

                        //获取屏幕长、宽

int height=canvas.getHeight();

int width=canvas.getWidth();

                        //画一个完全填充的红色长方形,并改变Alpha值

paint.setStyle(Paint.Style.STROKE);

paint.setColor(Color.RED);

paint.setAlpha(al--);            //改变Alpha(透明度)值

canvas.drawRect(width/2,2,width/3*2,height/2,paint);

                         invalidate();

}

}

}

本文出自 “12608835” 博客,请务必保留此出处http://12618835.blog.51cto.com/12608835/1920181

以上是关于如何通过android实现alpha渐变动画效果的主要内容,如果未能解决你的问题,请参考以下文章

Android通过Alpha实现渐变效果的几个方法

WPF C#实现动画(速度启停缓动线性渐变)

Android分别通过代码和xml实现动画效果

Android动画效果translatescalealpharotate详解

android中的动画有哪几类,它们的特点和区别是啥?

Android Animations 视图动画使用详解!!!