我们在开发android的过程中,合理使用动画能够提高用户体验,带给用户耳目一新的感觉。因此我们应该掌握android的动画使用。我在开发的过程中,很少自己写动画,在github搜基本可以满足要求,但是本着打破砂锅问到底的小强精神,知其然更要知其所以然,我决定还是好好看看文档,深入的学习一下动画吧,我始终相信在复杂的动画也是有简单的动画构成的,学好基本功。从简单到复杂。

首先我去看看了官方的文档,大概要学的东西就是这些。

AccelerateDecelerateInterpolator
AccelerateInterpolator
AlphaAnimation
Animation
Animation.Description
AnimationSet
AnimationUtils
AnticipateInterpolator
AnticipateOvershootInterpolator
BounceInterpolator
CycleInterpolator
DecelerateInterpolator
GridLayoutAnimationController
GridLayoutAnimationController.AnimationParameters
LayoutAnimationController
LayoutAnimationController.AnimationParameters
LinearInterpolator
OvershootInterpolator
RotateAnimation
ScaleAnimation
TranslateAnimation
整理了一下,animation的结构如下:

官方给我们提供的动画类型,看图一目了然,当然还有属性动画,之后再说。官方给我了我们这些基础动画,配上一下各种(Interpolator)加速器,组合成很多酷炫的动画。今天我们要细致说的是tweend animation中的RotateAnimation。

参照上图,默认的旋转点是view的(0,0),顺时针旋转角度为正,逆时针角度为负,开始角度fromDegrees,结束角度toDegrees。比如:
fromDegree 为30,toDegrees为60,那么旋转的角度是60-30 = 30。
fromDegrees为30,投Degrees为-30,那么旋转的角度是30-(-30)= 60
说清楚的角度的问题,再来讲旋转点,如何控制旋转点的位置呢?

public RotateAnimation (float fromDegrees, float toDegrees, float pivotX, float pivotY)

看一下构造函数,RotateAnimation 用 float pivotX, float pivotY这两个参数来控制旋转点。比如pivotX设为50%,pivotY设为50%,意思就是围绕view本身的中心旋转。
下面我们看一个example,58同城app上底部导航栏的item动画。很简单的一个动画,但是用着一点都不违和,很有耳目一新的感觉。
下面给出xml代码:
cycle_shake.xml

<?xml version="1.0" encoding="utf-8"?><cycleInterpolator xmlns:android="http://schemas.android.com/apk/res/android" android:cycles="3" />

这个cycleInterpolator 是用来重复动画3次。

shake.xml

<?xml version="1.0" encoding="utf-8"?><rotate xmlns:android="http://schemas.android.com/apk/res/android" android:pivotX="50%" android:pivotY="0%" android:fromDegrees="5" android:toDegrees="-5" android:duration="500" android:interpolator="@anim/cycle_shake" />

差不多了,解释一下interpolator,这是一个时间插值类,定义动画变换的速度。能够实现alpha/scale/translate/rotate动画的加速、减速和重复等。Interpolator类其实是一个空接口,继承自TimeInterpolator,TimeInterpolator时间插值器允许动画进行非线性运动变换,如加速和限速等,该接口中只有接口中有一个方法 float getInterpolation(float input)这个方法。传入的值是一个0.0~1.0的值,返回值可以小于0.0也可以大于1.0。

更多相关文章

  1. Android(安卓)帧动画的实例详解
  2. [置顶] Android补间动画,属性动画实现购物车添加动画
  3. 在Android上用规则过渡图片实现百叶窗过渡动画(已过时,请改用gles2
  4. android 动画入门(一)
  5. 自定义view实现超萌动感天气小太阳
  6. Android属性动画解析(中),ValueAnimator和ObjectAnimator的高级用法
  7. Android(安卓)View从源码的角度分析事件的注册和接收
  8. Android(安卓)仿微信之界面导航篇(一)
  9. 【精品推荐】200多种Android动画效果的强悍框架,太全了

随机推荐

  1. Android(安卓)View如何获取焦点
  2. shape画listview分割线
  3. Fragment、Activity比较——Android碎片
  4. Android(安卓)中ListView setOnItemClick
  5. android之知识点小结一
  6. Android布局属性详解
  7. 2013.08.15——— android Fragment的简
  8. 让EditView只能输入电话号码 同时还是密
  9. Android 短信 彩信 wap push的接收
  10. 最新Android ADT, SDK, SDK_tool等官方下