Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android動畫深入解析--仿58底部導航的item動畫

android動畫深入解析--仿58底部導航的item動畫

編輯:關於Android編程

我們在開發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的結構如下:
這裡寫圖片描述

官方給我們提供的動畫類型,看圖一目了然,當然還有屬性動畫,之後再說。官方給我了我們這些基礎動畫,配上一下各種(InterpolatZ喎?/kf/ware/vc/" target="_blank" class="keylink">vcqOpvNPL2cb3o6zX6brPs8m63Lbgv+HsxbXEtq+7raGjvfHM7M7Sw8fSqs+41sLLtbXEysd0d2VlbmQgYW5pbWF0aW9u1tC1xFJvdGF0ZUFuaW1hdGlvbqGjPGJyIC8+DQo8aW1nIGFsdD0="這裡寫圖片描述" src="/uploadfile/Collfiles/20151009/2015100908382956.png" title="\" />

參照上圖,默認的旋轉點是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


這個cycleInterpolator 是用來重復動畫3次。

shake.xml


差不多了,解釋一下interpolator,這是一個時間插值類,定義動畫變換的速度。能夠實現alpha/scale/translate/rotate動畫的加速、減速和重復等。Interpolator類其實是一個空接口,繼承自TimeInterpolator,TimeInterpolator時間插值器允許動畫進行非線性運動變換,如加速和限速等,該接口中只有接口中有一個方法 float getInterpolation(float input)這個方法。傳入的值是一個0.0~1.0的值,返回值可以小於0.0也可以大於1.0。

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved