Android 动画的简单使用——视图动画
本博文为《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);
实例代码下载
上一篇: Swift开发iOS应用(1)列表的实现
下一篇: 利用ps通道抠出背景简单的人物图文教程
推荐阅读
-
Android仿支付宝的头部伸缩动画效果
-
Android 四种动画效果的调用实现代码
-
Android开发之图形图像与动画(三)Animation效果的XML实现
-
Android开发之图形图像与动画(二)Animation实现图像的渐变/缩放/位移/旋转
-
Android ViewFlipper的简单使用
-
android应用开发之spinner控件的简单使用
-
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
-
PS CC制作简单漂亮的旋转动画图标
-
Android利用SurfaceView实现下雨的天气动画效果
-
Android使用Circular Reveal动画让页面跳转更炫酷