Android 动画(一)ViewAnimation

这篇博客介绍了Android中的View Animation,特别是补间动画(Tween Animation),包括Alpha透明动画、Rotate旋转动画、Scale缩放动画和Translate位移动画的详细使用,包括各自的属性设置,并提供了XML和Java代码示例。

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

在 Android 动画中,总共有两种类型的动画 View Animation(视图动画)和 Property Animator(属性动画),其中View Animation 又包括 Tween Animation(补间动画)和 Frame Animation(逐帧动画):

  • 补间动画:对视图的内容执行一系列简单的转换(位置,大小,旋转等等)
  • 逐帧动画,逐个加载一系列Drawable资源。

这两种动画类型都可以在任何View对象中使用,以提供简单的旋转计时器,活动图标和其他有用的UI元素。补间动画由这个包处理(android.view.animation); 逐帧动画由AnimationDrawable类处理。
这里写图片描述
这一篇介绍(总结)View Animation中的Tween Animation(补间动画)的操作 。

我始终坚信冰山理论,我们所接触到的不过是冰山一角,更多讲解及知识请查看官网:
https://developer.android.google.cn/training/animation/overview

一 View Animation

两个动画的关键类

  • Transformation 变换类
  • Animation 动画类

动画机制:动画由动画模型及变换矩阵组成,首先需要定义动画模型或动画参数,然后传到Transformation中运算,再由View呈现。在android中 Transformation类已经被封装到了android.view.animation.Animation类中,所以我们在Animation类及其子类中只需要传递相应动画参数便可实现动画效果。
这里写图片描述

通用的动画属性:
android:detachWallpaper 窗口动画的特殊选项:如果此窗口位于壁纸顶部,请不要使用它为壁纸设置动画。
android:duration 动画运行的时间周期(以毫秒为单位)。
android:fillAfter 设置为true时,保持显示动画运行完成后的状态
android:fillBefore 设置为true或fillEnabled未设置为true时,将在动画开始之前应用动画变换(也就是在动画结束后会显示动画初始时的状态)。
android:fillEnabled 设置为true时,将考虑fillBefore的值。
android:interpolator 定义用于平滑动画移动的插值器。
android:repeatCount 定义动画应重复的次数。
android:repeatMode 定义到达结尾时的动画行为,并且重复计数大于0或无限。 Animation.RESTART 当动画到达结尾并且重复计数为INFINTE_REPEAT或正值时,动画将从头开始重新开始 Animation.REVERSE 当动画到达结尾并且重复计数为INFINTE_REPEAT或正值时,动画向后播放(然后再向前播放)。
android:startOffset 一旦达到开始时间,动画运行前的延迟时间为毫秒。
android:zAdjustment 允许在动画持续时间内调整动画内容的Z轴顺序。 Animation.ZORDER_TOP 设置永远在最顶端,不被其他控件遮挡 ZORDER_NORMAL 请求将动画内容保持为当前的Z顺序。 ZORDER_BOTTOM 请求在动画持续期间强制动画内容在所有其他内容下。


AnimationSet用于构建组合动画

在AnimationSet类中定义应该一起播放的一组动画。每个单独的动画的转换组成一个单一的转换。如果AnimationSet设置其子项也设置的任何属性(例如duration或fillBefore),则AnimationSet的值会覆盖子值。

AnimationSet从动画中继承行为的方式非常重要。应用于AnimationSet的一些Animation属性会影响AnimationSet本身,有些会被推送到子节点,有些会被忽略,如下所示:

• duration,repeatMode,fillBefore,fillAfter:这些属性在AnimationSet对象上设置时,将被推送到所有子动画。
• repeatCount,fillEnabled:AnimationSet会忽略这些属性。
• startOffset,shareInterpolator:这些属性适用于AnimationSet本身。

从Build.VERSION_CODES.ICE_CREAM_SANDWICH这些属性开始,这些属性的行为在XML资源和运行时是相同的(在该版本之前,对于AnimationSet忽略了在XML中设置的值)。也就是说,调用 setDuration(500) AnimationSet具有与android:duration=”500”在XML资源中为AnimationSet对象声明相同的效果。

构造函数:
public AnimationSet(boolean shareInterpolator) 如果此集合中的所有动画应使用与此AnimationSet关联的插补器,则传递true。如果每个动画应该使用自己的插值器,则传递false。

单一动画:

1.1 Alpha 透明动画
自身属性:
• android:fromAlpha 动画开始的透明度,从 0.0 –1.0 ,0.0 表示全透明,1.0 表示完全不透明
• android:toAlpha 动画结束时的透明度,也是从 0.0 –1.0 ,0.0 表示全透明,1.0 表示完全不透明
XML代码:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值