动画的分类

本文详细介绍了Android中的三种动画类型:视图动画、帧动画和属性动画。视图动画包括Alpha、Rotate、Scale、Translate和AnimationSet属性,不改变View的实际属性。帧动画实现了类似幻灯片的效果,而属性动画则能实现更复杂的3D旋转等效果,并可以通过XML或Java代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、视图动画(View Animation)

1. 概述:

	视图动画,也叫Tween(补间)动画可以在一个视图容器中执行一系列简单变换(位置、大小、旋转、透明度)。譬如,如果你有一个TextView 对象,您可以移动、旋转、缩放、透明度设置其文本,当然,如果它有一个背景图像,背景图像会随着文本变化。

补间动画通过XML或Android代码定义,建议使用XML文件定义,因为它更具有可读性、可重用性

Java类名 XML关键字 描述信息
AlphaAnimation Alpha 放置在res/anim/目录下 渐变透明度动画效果
RotateAnimation Rotate 放置在res/anim/目录下 画面旋转动画效果
ScaleAnimation Scale放置在res/anim/目录下 渐变尺寸伸缩动画效果
TranslateAnimation translate放置在res/anim/目录下 画面转换移动动画效果
AnimationSet set 放置在res/anim/目录下 一个持有其他动画元素aplha、scale、translate、rotate或者其他set元素的容器

2. 视图动画说明:

可以看出来Animation抽象类是所有补间动画的基类,所以基类会提供一些通用的动画属性方法,如下,我们可以详细的看看这些属性:

2.1.Animation属性详解

XML属性 Java方法 解释
android:detachWallpaper setDetachWallpaper(boolean) 是否在壁纸上运行
android:duration setDuration(long) 动画持续时间、毫秒为单位
android:fillAfter setFillAfter(boolean) 控件动画结束时是否保持动画最后的状态
android:fillBefore setFillBefore(boolean) 控件动画结束时是否保持动画开始的状态
android:fillEnable setFillEnable(boolean) 与android:fillBefore效果相同
android:interpolator setInterpolator(Interpolator) 设定差值器(指定的动画效果,譬如回弹等)
android:repeatCount setRepeatCount(int) 重复次数
android:repeatMode setRepeatModer(int) 重复类型有两个值,reverse表示倒序排放,restart表示从头播放
android:startOffset setStartOffset(long) 调用start函数之后等待开始运行的时间,单位为毫秒
android:zAdjustment(int) setZAdjustment(int) 表示被设置动画的内容运行时在Z轴的位置(top / bottome / normal)默认为Normal

也就是说,无论我们补间动画的哪一种都已经具备了这种属性,也可以设置使用这些属性中的一个或多个

2.2 Alpha属性详解

XML属性 Java方法 解释
android:fromAlpha AlphaAnimation(float fromAlpha,…) 动画开始的透明度(0.0到1.0,0.0是全透明,1.0是不透明)
android:toAlpha alphaAnimation(…,float toAlpha) 动画结束的透明度(0.0到1.0,0.0是全透明,1.0是不透明)

2.3 Rotate属性详解

XML属性 Java方法 解释
android:fromDegrees RotateAnimation(folat fromDegrees,…) 旋转开始角度,正代表顺时针度数,负代表逆时针度数
android:toDegrees RotateAnimation(…,folat toDegrees,…) 旋转结束角度,正代表顺时针度数,负代表逆时针度数
android:pivotX RotateAnimation(…, folat pivoX,…) 缩放起点X坐标(数值、百分数、百分数P,譬如50表示以当前View左上角坐标加50px为初始点,50%表示以当前View宽高的50%做为起始点、50%p表示以当前View的左上角加上负空间宽高的50%做为初始点)
android:pivotY RotateAnimation(…, folat pivoY,…) 缩放起点Y坐标(数值、百分数、百分数P,譬如50表示以当前View左上角坐标加50px为初始点,50%表示以当前View宽高的50%做为起始点、50%p表示以当前View的左上角加上负空间宽高的50%做为初始点)

2.4 Scale属性详解

XML属性 Java方法 解释
android:fromXScale ScaleAnimation(float fromX,…) 初始化X轴缩放比例,1.0表示无变化
android:toXScale ScaleAnimation(…,float toX,…) 结束X轴缩放比例
android:fromYScale ScaleAnimation(…,float fromY,…) 初始化Y轴缩放比例,1.0表示无变化
android:toYScale ScaleAnimation(…,float toY,…) 结束Y轴缩放比例
android:pivotX ScaleAnimation(…, folat pivoX,…) 缩放起点X坐标(数值、百分数、百分数P,譬如50表示以当前View左上角坐标加50px为初始点,50%表示以当前View宽高的50%做为起始点、50%p表示以当前View的左上角加上负空间宽高的50%做为初始点)
android:pivotY ScaleAnimation(…, folat pivoY,…) 缩放起点Y坐标(数值、百分数、百分数P,譬如50表示以当前View左上角坐标加50px为初始点,50%表示以当前View宽高的50%做为起始点、50%p表示以当前View的左上角加上负空间宽高的50%做为初始点)

2.5 Translate属性详解

XML属性 Java方法 解释
android:fromXDelta TranlateAnimation(float fromXDelta,…) 起点X坐标(数值、百分数、百分数P,譬如50表示以当前View左上角坐标加50px为初始点,50%表示以当前View宽高的50%做为起始点、50%p表示以当前View的左上角加上负空间宽高的50%做为初始点)
android:fromYDelta TranslateAnimation(…,float fromYDelta,…) 起始点Y坐标,同上规律
android:toXDelta TranslateAnimation(…,float toXDelta,…) 结束点坐标,同上规律
android:toYDelta TranslateAnimation(…,float toYDelta) 结束点Y坐标,同上规律

2.6 AnimationSet属性详解

AnimationSet 继承自Animation,是上面四种的组合容器管理类,没有自己特有的属性,他的属性继承自Animation,所以特别注意,当我们对set标签使用Animation的属性时会对该标签下的所有子控件都产生影响

3. 视图动画使用方法

视图使用动画有两种,Java代码方式和xml方式

xml 方式

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值