parent
24841345b4
commit
9b5eb92359
@ -0,0 +1,132 @@ |
|||||||
|
--- |
||||||
|
Animator |
||||||
|
--- |
||||||
|
|
||||||
|
#### 目录 |
||||||
|
|
||||||
|
1. 思维导图 |
||||||
|
2. 帧动画 |
||||||
|
- 使用方式 |
||||||
|
- 优缺点 |
||||||
|
- 应用场景 |
||||||
|
3. 补间动画 |
||||||
|
- 位移动画 |
||||||
|
- 缩放动画 |
||||||
|
- 旋转动画 |
||||||
|
- 透明度动画 |
||||||
|
- 组合动画 |
||||||
|
- 优缺点 |
||||||
|
- 应用场景 |
||||||
|
4. 属性动画 |
||||||
|
5. 参考 |
||||||
|
|
||||||
|
#### 思维导图 |
||||||
|
|
||||||
|
#### 帧动画 |
||||||
|
|
||||||
|
##### 使用方式 |
||||||
|
|
||||||
|
1. xml 定义方式 |
||||||
|
|
||||||
|
在 drawable 目录下定义一个 drawable-list,然后给图片设置 res 就好了。 |
||||||
|
|
||||||
|
```xml |
||||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||||
|
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"> |
||||||
|
<item android:drawable="@drawable/ic_vip" android:duration="100"/> |
||||||
|
<item android:drawable="@drawable/ic_account" android:duration="100"/> |
||||||
|
<item android:drawable="@drawable/ic_clouse" android:duration="100"/> |
||||||
|
//... |
||||||
|
</animation-list> |
||||||
|
``` |
||||||
|
|
||||||
|
```java |
||||||
|
mIvFrame.setImageResource(R.drawable.anim_frame); |
||||||
|
AnimationDrawable drawable = (AnimationDrawable) mIvFrame.getDrawable(); |
||||||
|
drawable.start(); |
||||||
|
drawable.stop(); |
||||||
|
``` |
||||||
|
|
||||||
|
2. Java 代码实现 |
||||||
|
|
||||||
|
其实就是用代码构建 AnimationDrawable。 |
||||||
|
|
||||||
|
```java |
||||||
|
mAnimationDrawable=new AnimationDrawable(); |
||||||
|
for (int i = 0; i < 10; i++) { |
||||||
|
if (i<5){ |
||||||
|
mAnimationDrawable.addFrame(getDrawable(R.drawable.ic_vip),100); |
||||||
|
}else { |
||||||
|
mAnimationDrawable.addFrame(getDrawable(R.drawable.ic_clouse),100); |
||||||
|
} |
||||||
|
} |
||||||
|
mIvFrame.setImageDrawable(mAnimationDrawable); |
||||||
|
mAnimationDrawable.start(); |
||||||
|
mAnimationDrawable.stop(); |
||||||
|
``` |
||||||
|
|
||||||
|
##### 优缺点 |
||||||
|
|
||||||
|
优点:使用简单 |
||||||
|
|
||||||
|
缺点:图片是全部加载到内存中,可能导致 OOM。 |
||||||
|
|
||||||
|
##### 应用场景 |
||||||
|
|
||||||
|
基本上很少使用,可以看成 GIF 图。 |
||||||
|
|
||||||
|
#### 补间动画 |
||||||
|
|
||||||
|
##### 位移动画 |
||||||
|
|
||||||
|
1. xml 定义方式 |
||||||
|
|
||||||
|
```xml |
||||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||||
|
<set xmlns:android="http://schemas.android.com/apk/res/android"> |
||||||
|
<translate |
||||||
|
android:duration="1000" |
||||||
|
android:toXDelta="100" |
||||||
|
android:toYDelta="100" |
||||||
|
android:fromYDelta="0" |
||||||
|
android:fromXDelta="0"/> |
||||||
|
</set> |
||||||
|
``` |
||||||
|
|
||||||
|
```java |
||||||
|
mAnimation = AnimationUtils.loadAnimation(mContext, R.anim.anim_trans); |
||||||
|
mIvFrame.startAnimation(mAnimation); |
||||||
|
``` |
||||||
|
|
||||||
|
2. Java 代码实现方式 |
||||||
|
|
||||||
|
```java |
||||||
|
TranslateAnimation animation = new TranslateAnimation(0, 100, 0, 100); |
||||||
|
animation.setDuration(1000); |
||||||
|
animation.setFillAfter(true); |
||||||
|
mIvFrame.startAnimation(animation); |
||||||
|
``` |
||||||
|
|
||||||
|
##### 其他动画 |
||||||
|
|
||||||
|
类似,不举例了。 |
||||||
|
|
||||||
|
##### 优缺点 |
||||||
|
|
||||||
|
优点:使用简单 |
||||||
|
|
||||||
|
缺点:只改变显示,不改变实际属性 |
||||||
|
|
||||||
|
##### 应用场景 |
||||||
|
|
||||||
|
基本上大部分动画都能实现,常见于 Activity 转场动画等等 |
||||||
|
|
||||||
|
#### 属性动画 |
||||||
|
|
||||||
|
![](https://i.loli.net/2018/12/29/5c271c4643fc8.png) |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#### 参考 |
||||||
|
|
||||||
|
[Android 动画 Animator 家族使用指南](https://juejin.im/post/5c245f086fb9a049c043146a) |
Loading…
Reference in new issue