大家好,我是光源。在日常使用app或者玩游戏的过程中,我们经常可以看到某个view通过抖动来吸引用户注意,今天就来说说怎么实现这个动画。
具体需求是,实现一个抖动动画要求同时对大小、旋转角度进行更改且可定制。
要实现动画,我们首先应该想到的是 Android 中动画相关的内容。
Android 中一共有三类动画:
View Animation
又称补间动画,在 android.view.animation.Animation 类之下衍生了五个子类。
类名 | 作用 |
---|---|
AlphaAnimation | 渐变透明度 |
RotateAnimation | 旋转 |
ScaleAnimation | 尺寸缩放 |
TranslateAnimation | 位置平移 |
AnimationSet | 动画集合 |
通过前四个类,基本可以解决大部分动画需求,再使用 AnimationSet 使动画具有组合的能力。
- Drawable Animation
又称逐帧动画,通过设置多个帧在一定时间内不断进行帧的变换形成动画的效果,类似 gif 图。通过 xml 中的 animation-list 标签定义动画,再在 java 代码中用 AnimationDrawable 类来进行控制。
Property Animation
View Animation 虽然可以解决大部分动画,但还是有些无法实现,而 Drawable Animation 则太过费时费力,所以在 Android 3.0(API 11)引入了属性动画,属性动画实现原理就是修改控件的属性值实现的动画。具体实现又分为 ValueAnimator 和 ObjectAnimator,这里不展开。
回到需求本身,从需求上看,三种方式都可以实现(其实对最接近动画本质的逐帧动画而言,还真没有不能实现的