天天看点

解决android动画只执行一次的情况

  引子:今天在使用动画实现一个控件淡入淡出效果时,果断选用AlphaAnimation,但写出来后经调试发现,其不能多次触发实现,只有在首次使用时才可以,后来百度了下,发现大家有类似的问题,解决办法也很简单,就在原来基础上添加一行代码即可。下面看部分关键代码:

首先,定义两个AlphaAnimation对象

private AlphaAnimation appearAnimation,disappAnimation;
           

接下来实例化对象并设置一些参数如渐入渐出,持续时间,设置监听等。

appearAnimation = new AlphaAnimation(0, 1);//动画逐渐显现
appearAnimation.setDuration(1500);//持续时间
appearAnimation.setAnimationListener(new AnimationListener() {
			
	@Override
	public void onAnimationStart(Animation arg0) {
		// TODO Auto-generated method stub
				
	}
			
	@Override
	public void onAnimationRepeat(Animation arg0) {
		// TODO Auto-generated method stub
				
	}
			
	@Override
	public void onAnimationEnd(Animation arg0) {
		// TODO Auto-generated method stub
		RL_title.setVisibility(View.VISIBLE);
	}
});
<pre name="code" class="java" style="font-size: 14px;">disappAnimation = new AlphaAnimation(1, 0);//动画逐渐消失
disappAnimation.setDuration(1500);
disappAnimation.setAnimationListener(new AnimationListener() {
			
	@Override
	public void onAnimationStart(Animation arg0) {
		// TODO Auto-generated method stub
				
	}
			
	@Override
	public void onAnimationRepeat(Animation arg0) {
		// TODO Auto-generated method stub
				
	}
			
	@Override
	public void onAnimationEnd(Animation arg0) {
		// TODO Auto-generated method stub
		RL_subTitle.setVisibility(View.GONE);
	}
});
           

下面开始调用

RL_subTitle.setAnimation(disappAnimation);//调用该方法时,动画只执行一次
RL_subTitle.startAnimation(disappAnimation);//同时调用该方法时,动画可多次执行
//disappAnimation.startNow(); //开启动画			
RL_title.setAnimation(appearAnimation);
RL_title.startAnimation(appearAnimation);
           
//appearAnimation.start();
           

其实,执行一次和执行多次的区别在于,你是否完成了动画的完整编写。被屏蔽的代码表示开启动画,无论调用startNow()或start()均可以,至于两个方法的区别,可以查看链接:点击打开链接

首次写博客,有不对的地方请各位大神斧正斧正。