Android 动画效果 及 自定义动画

1. View动画-透明动画效果
2. View动画-旋转动画效果
3. View动画-移动动画效果
4. View动画-缩放动画效果
5. View动画-动画效果混合
6. View动画-动画效果侦听
7. 自定义动画效果

工程代码:DIYAnimation.zip

-----------------------------------

1. View动画-透明动画效果

Java代码实现

AlphaAnimation aa = new AlphaAnimation(0, 1); //透明动画效果
aa.setDuration(1000);
v.startAnimation(aa);

XML文件实现

在 res/anim 下创建alpha动画效果文件 alpha_animation.xml

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromAlpha="0"
    android:toAlpha="1"
    android:duration="1000" >
</alpha>
//使用
v.startAnimation(AnimationUtils.loadAnimation(getApplicationContext(), R.anim.alpha_animation));

 

 
2. View动画-旋转动画效果


3. View动画-移动动画效果


4. View动画-缩放动画效果


5. View动画-动画效果混合

Java实现,透明效果和移动效果结合

public class MixedAnimDemoActivity extends Activity {

    private Button mixedBtn;
    private AnimationSet as;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_mixed_anim_demo);
        
        as = new AnimationSet(true); //是否共用动画补间
        as.setDuration(1000);
        AlphaAnimation aa = new AlphaAnimation(0, 1);
        aa.setDuration(1000);
        as.addAnimation(aa);
        
        TranslateAnimation ta = new TranslateAnimation(200, 0, 200, 0);
        ta.setDuration(1000);
        as.addAnimation(ta);
        
        mixedBtn = (Button)findViewById(R.id.mixedBtn);
        mixedBtn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                v.startAnimation(as);
            }
        });
    }

}


6. View动画-动画效果侦听

创建动画效果的侦听事件, 在动画结束之后弹出一个Toast

AlphaAnimation aa = new AlphaAnimation(0, 1);
aa.setDuration(1000);
aa.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
        Toast.makeText(getApplicationContext(), "Animate end", Toast.LENGTH_LONG).show();
    }
});
as.addAnimation(aa);

 


7. 自定义动画效果

需要创建一个CustomAnim动画类,集成 Animation

public class CustomAnim extends Animation {

    @Override
    public void initialize(int width, int height, int parentWidth,
            int parentHeight) {
        // w我们需要知道目标动画效果的宽和高,所以需要重写该方法
        // 父级容器的宽高
        // initialize 在 applyTransformation之前执行
        super.initialize(width, height, parentWidth, parentHeight);
    }
    
    @Override
    protected void applyTransformation(float interpolatedTime, Transformation t) {
        // TODO Auto-generated method stub
        // interpolatedTime 补间时间, 从0~1, 动画执行完为1

        //t.setAlpha(interpolatedTime); //可以实现透明动画
        
        //可以实现移动效果
        //t.getMatrix().setTranslate(200 * interpolatedTime, 200 * interpolatedTime);
        
        //左右摇摆效果
        t.getMatrix().setTranslate((float)(Math.sin(interpolatedTime*50)*10), 0); 
        super.applyTransformation(interpolatedTime, t);
    }
}

 

工程代码:DIYAnimation.zip

 

posted @ 2015-08-12 17:56  carlo-z  阅读(331)  评论(0编辑  收藏  举报