欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android 动画的简单使用——视图动画

程序员文章站 2022-03-17 11:33:32
...

本博文为《Android群英传》阅读笔记,供个人备忘用。

一、视图动画概述

视图动画使用简单,效果丰富,它提供了AlphaAnimation、RotateAnimation、TranslateAni-mation、ScaleAnimation四种动画方式,并提供了AnimationSet动画集合,混合使用多种动画。在Android 3.0之前,视图动画一家独大,但随着Android 3.0之后属性动画框架的推出,它的风光就大不如前了。相比属性动画,视图动画的一个非常大的缺陷就是不具备交互性,当某个元素发生视图动画后,其响应事件的位置还依然在动画前的地方,所以视图动画只能做普通的动画效果,避免交互的发生。但是它的优点也非常明显,即效率比较高且使用方便。

视图动画使用非常简单,不仅可以通过XML文件来描述一个动画过程,同样也可以使用代码来控制整个动画过程。

下面这个实例就列举了一些简单的视图动画使用方法。

二、视图动画实例(使用方法:纯Java代码)

1、透明度动画

为视图增加透明度的变换动画

                //0-1由透明变成不透明
                AlphaAnimation aa = new AlphaAnimation(0, 1);
                //动画持续时间
                aa.setDuration(3000);
                view.startAnimation(aa);

效果图

Android 动画的简单使用——视图动画

2、旋转动画

为视图增加旋转的变换动画。

                RotateAnimation ra = new RotateAnimation(0, 360);
                ra.setDuration(3000);
                view.startAnimation(ra);

Android 动画的简单使用——视图动画

                RotateAnimation ra = new RotateAnimation(0, 360, 200, 200);
                ra.setDuration(3000);
                view.startAnimation(ra);

Android 动画的简单使用——视图动画

                RotateAnimation ra = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
                ra.setDuration(3000);
                view.startAnimation(ra);

Android 动画的简单使用——视图动画

1.RotateAnimation(fromDegrees, toDegrees),默认以View左上角顶点为旋转点。

2.RotateAnimation(float fromDegrees, float toDegrees, float pivotX, float pivotY):

(pivotX,pivotY)为旋转点。pivotX为距离左侧的偏移量,pivotY为距离顶部的偏移量。即为相对于View左上角(0,0)的坐标点。

3.RotateAnimation(fromDegrees, toDegrees, pivotXType, pivotXValue, pivotYType, pivotYValue):

pivotXType, pivotXValue, pivotYType, pivotYValue 旋转点类型及其值。

3、位移动画

为视图移动时增加位移动画。

                //TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta,    float toYDelta)
                //fromXDelta:起始x轴; toXDelta: 最终x轴; fromYDelta: 起始y轴; toYDelta: 最终y轴.
                TranslateAnimation ta = new TranslateAnimation(0,200, 0, 300);
                ta.setDuration(3000);
                view.startAnimation(ta);

Android 动画的简单使用——视图动画

4、缩放动画

为视图的缩放增加动画效果

                //ScaleAnimation(float fromX, float toX, float fromY, float toY)
                //fromX: 动画起始时 X坐标上的伸缩尺寸;
                // toX: 动画结束时 X坐标上的伸缩尺寸;
                // fromY: 动画起始时Y坐标上的伸缩尺寸;
                // toY: 动画结束时Y坐标上的伸缩尺寸.
                //此时,动画的其实坐标为坐标系原点(0,0);
                ScaleAnimation sa = new ScaleAnimation(0.5f, 1, 0.5f, 1);
                sa.setDuration(2000);
                view.startAnimation(sa);

Android 动画的简单使用——视图动画

与旋转动画一样,缩放动画也可以设置缩放的中心点,代码如下所示(这里的参数效果与前面设置的选择中心为自身中心效果相同)。

          ScaleAnimation sa = new ScaleAnimation(0.5f, 1, 0.5f, 1, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
          sa.setDuration(2000);
          view.startAnimation(sa);

Android 动画的简单使用——视图动画

5、动画集合

通过AnimationSet,可以将动画以组合的形式展现出来

                AnimationSet as = new AnimationSet(true);
                as.setDuration(2000);
                //旋转动画
                RotateAnimation ra = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
                ra.setDuration(1500);
                as.addAnimation(ra);


                //缩放动画
                ScaleAnimation sa = new ScaleAnimation(0, 2, 0, 2, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
                sa.setDuration(1500);
                as.addAnimation(sa);

                view.startAnimation(as);

Android 动画的简单使用——视图动画

实例代码下载