android 处理动画闪烁效果

   很久没写过博客了,新年过后来一发。

   在以前的微信效果的博文中,有一点问题没有实现,就是动画效果的闪烁问题,一下先说明几点吧。

  1. android中的动画效果只是展示的一场效果,控件本身并没有移动。

  2. 设置动画效果停顿,停顿的位子的控件 如果没有移动到该位置,那么这是个假象,控件还在原来位置。这里的动画 是个假的。

 下面是代码:

package com.animation.avtivity;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;

public class AnimationActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        final ImageView iv_ani = (ImageView) this.findViewById(R.id.iv_ani);
        
        final TranslateAnimation ta = new TranslateAnimation(0, 0, 0, 300);
        ta.setDuration(3000);
        final TranslateAnimation ta2 = new TranslateAnimation(0, 0, 0, -300);
        ta2.setDuration(3000);
        
        iv_ani.setOnClickListener(new View.OnClickListener() {
        	
        	public void onClick(View v) {
        		// TODO Auto-generated method stub
        		iv_ani.startAnimation(ta);
        		
        	}
        });
        
        
        ta.setAnimationListener(new Animation.AnimationListener() {
			
			public void onAnimationStart(Animation animation) {//动画开始时
				
				
			}
			
			public void onAnimationRepeat(Animation animation) {//动画重复
				
			}
			
			public void onAnimationEnd(Animation animation) {//动画结束
				iv_ani.clearAnimation();
				iv_ani.layout(iv_ani.getLeft(),iv_ani.getTop()+300,iv_ani.getRight(), iv_ani.getBottom()+300);//动画完成后将控件定格到该位置
				iv_ani.startAnimation(ta2);
			}
		});
        ta2.setAnimationListener(new Animation.AnimationListener() {
        	
        	public void onAnimationStart(Animation animation) {//动画开始时
        		
        		
        	}
        	
        	public void onAnimationRepeat(Animation animation) {//动画重复
        		
        	}
        	
        	public void onAnimationEnd(Animation animation) {//动画结束
        		iv_ani.clearAnimation();
        		iv_ani.layout(iv_ani.getLeft(),iv_ani.getTop()-300,iv_ani.getRight(), iv_ani.getBottom()-300);
        	}
        });
        
    }
}


解决的核心代码为    iv_ani.clearAnimation(); 即清楚动画效果。

之前在网上看见有人处理方法为   TranslateAnimation ta = new TranslateAnimation(0, 0, 0, 0);

                                                            iv_ani.startAnimation(ta);

由于最近人比较懒,就写到这了,如果有什么不明白的问题,欢迎留言。


你可能感兴趣的:(android)