天天看點

RecyclerView加載動畫

引言

看到很多RecyclerView都有不錯的動畫,我動畫知識也很欠缺,就決定拿他來玩玩。

本文先玩設定RecyclerView的加載動畫

代碼

效果

RecyclerView加載動畫

實作步驟:

1.在res/anim檔案下新增動畫animate.xml

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="@integer/anim_duration_medium">

    <translate
        android:fromYDelta="100%"
        android:toYDelta="0" />

    <alpha
        android:fromAlpha="0"
        android:toAlpha="1" />

    <scale
        android:fromXScale="105%"
        android:fromYScale="105%"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="100%"
        android:toYScale="100%" />

</set>
           

2.recylerView設定LayoutAnimationController

LayoutAnimationController controller = new LayoutAnimationController(AnimationUtils.loadAnimation(this,R.anim.animate));
        recyclerView.setLayoutAnimation(controller);
           

動畫筆記

關于動畫從來都沒有好好的玩過,以下記錄一下學習到的。

Android中動畫有四種基本動畫:

animate description
translate 位移動畫
alpha 漸變透明度動畫
scale 縮放動畫
rotate 旋轉動畫

如上面的動畫一樣,可使用set集合來組合動畫

關于插值器,我了解的是 值的一種變化方式。

比如從0-100變化,有的插值器會勻速變有的會加速…

常用插值器:

interpolator description
AccelerateInterpolator 在動畫開始的地方速率變小,然後開始加速變大
DecelerateInterpolator 在動畫開始的地方變大,然後慢慢變小
AnticipateInterpolator 開始的時候慢慢變小,然後突然加速變大
BounceInterpolator 變大動畫快結束的時候,突然更大變大,然後還原
CycleInterpolator 動畫循環播放特定的次數,速率改變沿着正弦曲線
LinearInterpolator 勻速變大
AccelerateInterpolator 向前甩一定值後再回到原來位置

從開始看到别人寫的動畫時,總是疑惑裡面的傳值機關,有的是int有的是float有的甚至是百分号,決定總結一下。

translate标簽:

0是原來的位置

//機關是int%,0可以省略%
android:fromYDelta="100%"
android:toYDelta="0"
           

alpha标簽:

0-1是從完全透明到完全不透明

//機關是float
android:fromAlpha="0"
           

rotate标簽(需要中心點坐标):

從小到大是順時針旋轉,從大到小是逆時針旋轉。

//機關是int
android:fromDegrees="0"
           

scale标簽(需要中心點坐标):

//機關是int%
 android:fromXScale="105%"
           

另外中心點坐标pivotY的機關是int%

android:pivotX="50%"
           

繼續閱讀