@TOC
思路: 观察动画由哪些流程组成(动画分解)
1 初始状态:
背景
圆圈
叉
2 旋转动画 时长
圆圈从-90 逆时针方向旋转 3圈 -1080度
叉 缩小为一个圆点
3 圆点上移 时长
4 圆点下移 时长
5 由一个圆点 变成 一个勾勾 时长
动画编排 ValueAnimator 改变属性的值 addUpdateLister onAnimationUpdate(){ 获取属性值 invalidateSelf(); }
旋转动画 matrix setrotate 0 -> 1 旋转 度数 * totateDegreeScale(系数 百分比)
叉 - > 圆点 1 -> 0 叉的长度 * 系数
圆点上移 平移 0 -> 1 上移
圆点下移 平移 0 -> 1 下移
画勾勾 0 -> 1
延时 -> 初始状态 addListener onAnimationEnd 状态 = 初始状态 invalidateSelf
已知角度θ 半径r A(x,y) 中心点( cx,cy) x = r * cosθ y = r * sinθ
x1 = cx - r * cosθ y1 = cy + r * sinθ 画线 两个点 起始点
运行效果
[video(video-74JEYg3p-1622968473150)(type-bilibili)(url-player.bilibili.com/player.html…)]
代码实现
kotlin知识补充
区间
200..299 表示 200 -> 299 的区间(包括 299 )
when 关键字
Java 当中的 switch 的⾼级版,分⽀条件上可以⽀持表达式
受检异常
Kotlin 不需要使⽤ try-catch 强制捕获异常
编译期常量
在静态变量上加上 const 关键字变成编译期常量
标签
在 Java 中通过 「 类名.this 例如 Outer.this 」 获取⽬标类引⽤
在 Kotlin 中通过「 this@类名 例如 this@Outer 」获取⽬标类引⽤
内部类
在 Kotlin 当中,内部类默认是静态内部类
通过 inner 关键字声明为嵌套内部类
可⻅性修饰符
默认的可⻅性修饰符是 public
新增的可⻅性修饰符 internal 表示当前模块可⻅
注释
注释中可以在任意地⽅使⽤ [] 来引⽤⽬标,代替 Java 中的 @param @link
等
非空断⾔
可空类型强制类型转换成不可空类型可以通过在变量后⾯加上 !! ,来达到类型转
换。
open/fifinal
Kotlin 中的类和函数,默认是被 final 修饰的 ( abstract 和 override 例外)