Android动画分析(view动画)

Android的动画可以分为3种:view动画,帧动画,属性动画,其实帧动画也属于view动画的一种,只不过它和平移,旋转等常见的view动画在表现形式上略有不同而已

view动画:

就是对场景的对象做不同的变换(平移,缩放,旋转,透明度)从而产生动画效果,是一种渐进式动画

帧动画:

类似播放电影,一帧一帧的播放,它通过顺序播放一系列图像从而产生动画效果,但是如果图片较大,会导致OOM

属性动画:

通过动态的改变对象的属性从而达到动画效果,属性动画是API11的新特性,在低版本中无法使用,但是我们可以通过兼容库来兼容它

下面来看看各种动画的特性


view动画

view动画的对象是view,它支持4种动画效果,平移,缩放,旋转,透明度,这4种动画效果对应着Animation的子类:TranslateAnimation(平移),ScaleAnimation(缩放),RotateAnimation(透明度),AlphaAnimation(透明度),这4种属性都可以用xml来定义,我们来看看一张图表:

Android动画分析(view动画)_第1张图片

可以看到不同的动画对应的xml标签是不同的,我们要在xml中使用动画属性,首先需要创建一个xml文件,这个文件的路径是:res/anim/xxx.xml,然后我们就可以在里面写我们自己需要的动画效果,动画效果可以分为2种,一种是单个动画效果,一种是组合动画效果,下面我们看看怎么实现这两种效果,首先我们在res下新建个文件夹叫anim,然后再里面新建两个xml,分别是单个动画效果和组合动画效果

单个动画效果:

translate.xml



    
    

alpha.xml



    
    

scale.xml




    
    


rotate.xml



    
    

上面这4个就是单个动画效果的写法,现在我们来看看多种动画效果组合

组合动画效果:



    

    

非常的简单,就是将多个不同的动画组合在set标签里面,现在我们来看看怎么用,非常简单

myView = (MyView) findViewById(R.id.myView);
Animation animation= AnimationUtils.loadAnimation(this,R.anim.translate);
myView.startAnimation(animation);

我们通过AnimationUtils.loadAnimation();来获取到我们动画布局,第一个参数是上下文,第二个就是对应的动画xml文件,然后view.startAnimation开启动画就可以了,另外,我们也可以通过代码来实现动画效果:

 AlphaAnimation animation=new AlphaAnimation(0,1);
 animation.setDuration(300);
 myView.startAnimation(animation);

创建一个透明度的动画效果,设置它在300ms内透明度由0到1,这跟我们通过xml去实现的效果是一样,就不做过多的介绍,另外,我们可以监听动画变化过程:

myView.setLayoutAnimationListener(new Animation.AnimationListener() {
            //动画开启前
            @Override
            public void onAnimationStart(Animation animation) {
                
            }

            //动画结束后
            @Override
            public void onAnimationEnd(Animation animation) {

            }

            //动画进行时
            @Override
            public void onAnimationRepeat(Animation animation) {

            }
        });

好了,关于view动画的介绍就到这了

你可能感兴趣的:(Android动画分析(view动画))