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

来源:互联网 发布:nginx绑定域名 编辑:程序博客网 时间:2024/06/08 06:02

本博文为《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);

效果图

2、旋转动画

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

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

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

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

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);

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);

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

          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);

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);

实例代码下载

原创粉丝点击