Android 动画Animation简单总结

最近看到了一些关于Animation的内容,总结一下留待后用;

视图动画

我们在APP中看到的动画一般都是视图动画,那就先来总结一下视图动画;一般我们使用到的视图动画包括透明动画(AlphaAnimation)、旋转动画(RotateAnimation)、移动动画(TranslateAnimation)和缩放动画(ScaleAnimation)。我们先来看看运行效果图,然后再来呈现代码。

视图动画.gif

不多说了直接上代码

透明动画(AlphaAnimation)

纯java实现:
只需要在对应的button点击事件中添加AlphaAnimation即可:

findViewById(R.id.btn_alpha).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        AlphaAnimation alphaAnimation = new AlphaAnimation(0, 1);//透明度从0~1
        alphaAnimation.setDuration(1000);//持续时间
        v.startAnimation(alphaAnimation);
    }
});

java和xml结合条件下:
在res/anim下创建alpha.xml如下:



在java代码点击事件中添加上:

v.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, R.anim.alpha));

剩下的3个动画也和上面的方法类似,下面就简单的介绍一下

旋转动画(RotateAnimation)

纯java实现:
只需要在对应的button点击事件中添加RotateAnimation即可:

RotateAnimation rotateAnimation = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
//上述参数解释分别为:旋转起始角度,旋转结束角度,相对与自身,x轴方向的一半,相对于自身,y轴方向的一半
rotateAnimation.setDuration(1000);
v.startAnimation(rotateAnimation);

java和xml结合条件下:
在res/anim下创建rotate.xml如下:



在java代码点击事件中添加上:

v.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, R.anim.rotate));

移动动画(TranslateAnimation)

纯java实现:

TranslateAnimation translateAnimation = new TranslateAnimation(0,80,0,80);
//起始x轴,最终x轴,起始y轴,最终y轴
translateAnimation.setDuration(1000);
v.startAnimation(translateAnimation);

java和xml结合条件下:
在res/anim下创建translate.xml如下:



在java代码点击事件中添加上:

v.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, R.anim.translate));

缩放动画(ScaleAnimation)

纯java实现:

ScaleAnimation scaleAnimation = new ScaleAnimation(0,1,0,1);//x轴0倍,x轴1倍,y轴0倍,y轴1倍
scaleAnimation.setDuration(1000);
v.startAnimation(scaleAnimation);

java和xml结合条件下:
在res/anim下创建scale.xml如下:



在java代码点击事件中添加上:

v.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, R.anim.scale ));

混合动画

纯java实现:

AnimationSet animationSet = new AnimationSet(true);//共用动画补间
animationSet.setDuration(1000);

AlphaAnimation alphaAnimation = new AlphaAnimation(0, 1);
alphaAnimation.setDuration(1000); 
animationSet.addAnimation(alphaAnimation); 

TranslateAnimation translateAnimation = new TranslateAnimation(0, 80, 0, 80); 
translateAnimation.setDuration(1000);
animationSet.addAnimation(translateAnimation); 

v.startAnimation(animationSet);

java和xml结合条件下:
在res/anim下创建blend_set.xml如下:


    
    
    
    
    
    

在java代码点击事件中添加上:

v.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, R.anim.blend_set));

布局动画

先看效果图:

布局动画.gif

根据示意图我们发现button按钮出现的时间是不一样的,这就是对整个页面布局添加了动画之后的效果;我们来看一下如何实现的:

    RelativeLayout activity_main = (RelativeLayout) findViewById(R.id.activity_main);
    ScaleAnimation scaleAnimation = new ScaleAnimation(0,1,0,1);
    scaleAnimation.setDuration(1000);

    LayoutAnimationController layoutAnimationController = new LayoutAnimationController(scaleAnimation,0.5f);//动画效果、每个动画效果之间延迟一半时间运行
    layoutAnimationController.setOrder(LayoutAnimationController.ORDER_RANDOM);
    //加载顺序:包括从上倒下(ORDER_NORMAL)、从下到上(ORDER_REVERSE)、随机(ORDER_RANDOM)
    activity_main.setLayoutAnimation(layoutAnimationController);

实现步骤

  1. 先设置动画效果
  2. 利用LayoutAnimationController ()方法添加上动画、延迟时间以及出现顺序
  3. 然后找到布局对应的layout文件,使用setLayoutAnimation()方法即可

在第二页中的listview实现的动画效果是在xml中设置的,也比较简单:
在res/anim下创建list_animation.xml文件(借用上面的scale.xml文件):



在lsitview的xml文件下添加一句:

android:layoutAnimation="@anim/list_animation"

OK,以上功能完全实现~

你可能感兴趣的:(Android 动画Animation简单总结)