You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.8 KiB
2.8 KiB
Animator
目录
- 思维导图
- 帧动画
- 使用方式
- 优缺点
- 应用场景
- 补间动画
- 位移动画
- 缩放动画
- 旋转动画
- 透明度动画
- 组合动画
- 优缺点
- 应用场景
- 属性动画
- 参考
思维导图
帧动画
使用方式
-
xml 定义方式
在 drawable 目录下定义一个 drawable-list,然后给图片设置 res 就好了。
<?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>
mIvFrame.setImageResource(R.drawable.anim_frame); AnimationDrawable drawable = (AnimationDrawable) mIvFrame.getDrawable(); drawable.start(); drawable.stop();
-
Java 代码实现
其实就是用代码构建 AnimationDrawable。
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 图。
补间动画
位移动画
-
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>
mAnimation = AnimationUtils.loadAnimation(mContext, R.anim.anim_trans); mIvFrame.startAnimation(mAnimation);
-
Java 代码实现方式
TranslateAnimation animation = new TranslateAnimation(0, 100, 0, 100); animation.setDuration(1000); animation.setFillAfter(true); mIvFrame.startAnimation(animation);
其他动画
类似,不举例了。
优缺点
优点:使用简单
缺点:只改变显示,不改变实际属性
应用场景
基本上大部分动画都能实现,常见于 Activity 转场动画等等