Android 视图动画(View Animation) 使用详解

谨以文章记录学习历程,如有错误还请指明。

动画综述

Google大大对动画的总述如下:

Animations can add visual cues that notify users about what’s going on in your app. They are especially useful when the UI changes state, such as when new content loads or new actions become available. Animations also add a polished look to your app, which gives it a higher quality look and feel.

没错,放上原文我只是装个逼,~
简单来说,动画就两个作用:

  • 添加可视提示,通知我们这个APP中正在发生的事情。比如用户界面发生变化时,有新的内容加载或某些操作变为可用。
  • 提供高逼格的外观(装逼利器

动画的分类如下:
动画分类

视图动画(View Animation)

补间动画(Tween Animation)

概述

  • 作用于视图对象View,如TextView,不可作用于属性,如点击响应位置等
  • 通过确定开始的视图样式 & 结束的视图样式、中间动画变化过程由系统补全来确定一个动画
  • 动画可以在视图对象的内容上执行一系列简单的转换(位置、大小、旋转和透明度)。如果你有一个TextView对象,你可以移动,旋转,缩放文本。如果它有一个背景图像,背景图像将随着文本一起被转换。
  • XMLJAVA代码定义。建议使用XML文件,因为它比更可读、可重用和可切换

分类

根据动画效果,补间动画分为以下4类
* 透明度动画(alpha)
* 缩放动画(scale)
* 平移动画(Translate)
* 旋转动画(rotate)

不同动画与Java类、xml文件关键字对应关系如下:

名称 Java子类 xml关键字 说明
透明度动画 AlphaAnimation <alpha> 放置在res/anim/目录下 透明度渐变
旋转动画 RotateAnimation <rotate> 放置在res/anim/目录下 视图旋转
缩放动画 ScaleAnimation <scale> 放置在res/anim/目录下 放大/缩小 视图尺寸大小
平移动画 TranslateAnimation <translate> 放置在res/anim/目录下 视图位置移动
复合动画 AnimationSet <set> 放置在res/anim/目录下 一个持有其它动画元素alpha、scale、translate、rotate或者其它set元素的容器

详细说明

补间动画的继承关系:
继承关系

由于Animation是抽象基类,其提供了一些通用的动画属性方法,如下所示

xml属性 Java方法 说明
android:detachWallpaper setDetachWallpaper(boolean) 是否在壁纸上运行
android:duration setDuration(long) 动画的运行时间(以毫秒为单位);必须设置
android:fillAfter setFillAfter(boolean) 动画结束时是否保持动画最后的状态;默认为false,优先于fillBefore
android:fillBefore setFillBefore(boolean) 动画结束时是否还原到开始动画前的状态;默认为true
android:fillEnabled setFillEnabled(boolean) 是否应用fillBefore的值,对fillAfter无影响;默认为true
android:interpolator setInterpolator(Interpolator) 设定插值器(指定的动画效果,譬如回弹等)
android:repeatCount setRepeatCount(int) 重复次数
android:repeatMode setRepeatMode(int) 重复类型有两个值,reverse表示倒序回放,restart表示从头播放
android:startOffset setStartOffset(long) 调用start函数之后等待开始运行的时间,单位为毫秒
android:zAdjustment setZAdjustment(int) 表示被设置动画的内容运行时在Z轴上的位置(top/bottom/normal),默认为normal


透明度动画(Alpha)– 属性
xml属性 Java方法 说明
android:fromAlpha AlphaAnimation(float fromAlpha, …) 动画开始的透明度(0.0到1.0,0.0是全透明,1.0是不透明)
android:toAlpha AlphaAnimation(…, float toAlpha) 动画结束的透明度,同上


旋转动画(Rotate)– 属性
xml属性 Java方法 说明
android:fromDegrees RotateAnimation(float fromDegrees, …) 旋转开始角度,正代表顺时针度数,负代表逆时针度数
android:toDegrees RotateAnimation(…, float toDegrees, …) 旋转结束角度,正代表顺时针度数,负代表逆时针度数
android:pivotX RotateAnimation(…, float pivotX, …) 缩放起点X坐标(数值、百分数、百分数p,譬如50表示以当前View左上角坐标加50px为初始点、50%表示以当前View的左上角加上当前View宽高的50%做为初始点、50%p表示以当前View的左上角加上父控件宽高的50%做为初始点)
android:pivotY RotateAnimation(…, float pivotY) 缩放起点Y坐标,同上规律


缩放动画(Scale)– 属性
xml属性 Java方法 说明
android:fromXScale ScaleAnimation(float fromX, …) 初始X轴缩放比例,1.0表示无变化
android:toXScale ScaleAnimation(…, float toX, …) 结束X轴缩放比例
android:fromYScale ScaleAnimation(…, float fromY, …) 初始Y轴缩放比例
android:toYScale ScaleAnimation(…, float toY, …) 结束Y轴缩放比例
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值