转载请注明链接: http://blog.csdn.net/feather_wch/article/details/79153727
- 以面试提问形式总结Android动画所有知识点。适合学习或者复习。
- 主要包括:View动画的定义和使用,属性动画的定义和使用以及插值器、估值器的作用,以及属性动画的原理
- 代码部分用Kotlin/java方式实现。
Android动画深入分析(37题)
版本: 2018/2/11-1
部分知识点参考自:http://blog.csdn.net/feather_wch/article/details/78625945#6-animationset
1、Android动画分为三种:
- View动画(Animation)
- 帧动画(属于View动画,但有区别)
- 属性动画
View动画
2、 View动画的分类
分类 | XML标签 | 效果 |
---|---|---|
TranslateAnimation | translate | 移动View |
ScaleAnimation | scale | 放大或缩小View |
RotateAnimation | rotate | 旋转View |
AlphaAnimation | alpha | 改变透明度 |
3、 View动画的使用
- 可以采用XML定义动画
- 也可以通过代码动态创建
- 建议使用XML方法创建,使得动画的可读性更好
- XML形式的View动画,需要在
res/anim/
目录下创建XML文件custom.xml
4、 View动画通过XML定义的源码和各属性要点
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="true"
android:duration="2000" //持续时间
android:fillAfter="true"> //动画后是否停留在结束位置
<alpha
android:fillAfter="true"
android:dutaion="1000" //动画持续时间
android:fromAlpha="0.1" //初始透明度,1为不透明,0为完全透明
android:toAlpha="1"/>
<scale
android:fromXScale="0.5" //水平方向缩放,从0.5放大至1.2
android:toXScale="1.2"
android:fromYScale="1.1" //垂直方向缩放,从1.1缩小至0.3
android:toYScale="0.3"
android:pivotX="0.5" //轴点(X,Y)
android:pivotY="0.6"/>
<translate
android:fromXDelta="10" //x的初始值
android:toXDelta="120" //x的结束值
android:fromYDelta="0"
android:toYDelta="100"/>
<rotate
android:dutaion="1000"
android:fromDegrees="0" //旋转开始的角度
android:toDegrees="180" //旋转结束的角度
android:pivotY="0" //根据轴点进行旋转
android:pivotX="0"/>
</set>
android:duration
表示持续时间,set有duration属性,内部动画的duration
全部以set的为准set标签
没有duration时,内部的各种动画标签均以自身的duration
为准android:fillAfter
动画结束后,是否留在结束位置scale
中的(pivotX,pivotY)
是以该点坐标为中心进行缩放。无论坐标超过View本身的范围。rotate
中的(pivotX,pivotY)
是旋转的中心坐标,以此点进行旋转。
5、如何应用XML定义的动画
val imageview = findViewById<ImageView>(R.id.imaview)
val animation = AnimationUtils.loadAnimation(this, R.anim.custom_anima