Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android 閃爍動畫和搖擺動畫

android 閃爍動畫和搖擺動畫

編輯:關於Android編程

通常我們需要一個item連續的播放某一段動畫或者循環的執行某個動畫,這裡我們就可以用到一下技巧。

一、續播 (不知道取什麼名字好,就是先播放動畫A, 接著播放動畫B)

有兩種方式:

第一種:

分別定義兩個動畫,A和B, 然後先播放動畫A,設置A 的 AnimationListener。當onAnimationEnd觸發(即A播放完畢)時,開始播放B。
    animation1.setAnimationListener(new Animation.AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {}@Overridepublic void onAnimationRepeat(Animation animation) {}@Overridepublic void onAnimationEnd(Animation animation) {animation2.start();});

    第二種方法:

    第一種方法還是比較繁瑣的,下面這種方式相信大家會喜歡的。

    寫一個動畫集AnimationSet,在其中定義動畫A和B,為動畫B設置startOffset, 其值就是前一個動畫播放的所需的時間。

    這邊舉一個例子,動畫A是 透明度從 0.1 到 1.0 , 動畫B是透明度從1.0到0.1, 使用下面這個動畫集你就可以看到整個變化過程。


      復制代碼
      其中android:startOffset="3000" 表示延遲3秒後再執行。 如果去掉其中的 android:startOffset="3000" , 你就什麼效果也看不到了。 因為兩個動畫會同時播放。

      二、循環
      有時候,我們可能需要實現一個圖片不停閃爍的功能(比如天氣預報中的緊急警報功能), 或者有的時候我們需要實現圖片左右晃動,都需要循環動畫來實現。
      同樣,也有兩種辦法。
      第一種,設置兩個動畫A 和 B, 動畫A 是透明度 0 -1, 動畫B是1 - 0, 然後對這兩個動畫都進行監聽, A 結束執行B, B結束執行A.. 無限循環...

      第二種,第二種,利用Animation的setRepeatCount、setRepeatMode來實現動畫循環。

      比如閃爍(透明度亮 -> 暗, 暗->亮,如此循環)

        //閃爍AlphaAnimation alphaAnimation1 = new AlphaAnimation(0.1f, 1.0f);alphaAnimation1.setDuration(3000);alphaAnimation1.setRepeatCount(Animation.INFINITE);alphaAnimation1.setRepeatMode(Animation.REVERSE);iv.setAnimation(alphaAnimation1);alphaAnimation1.start();


        復制代碼
        alphaAnimation1.setRepeatCount(Animation.INFINITE); 表示重復多次。 也可以設定具體重復的次數,比如alphaAnimation1.setRepeatCount(5);
        alphaAnimation1.setRepeatMode(Animation.REVERSE);表示動畫結束後,反過來再執行。 該方法有兩種值, RESTART 和 REVERSE。 RESTART表示從頭開始,REVERSE表示從末尾倒播。

        再比如左右搖擺

          //搖擺TranslateAnimation translateAnimation = new TranslateAnimation(150f, 350f, 50, 50);translateAnimation.setDuration(1000);translateAnimation.setRepeatCount(Animation.INFINITE);translateAnimation.setRepeatMode(Animation.REVERSE);iv.setAnimation(translateAnimation); //這裡iv就是我們要執行動畫的item,例如一個imageViewtranslateAnimation.start();

          通常我們會在xml中直接定義,如下:


          android:interpolator="@android:anim/accelerate_interpolator"
          android:shareInterpolator="true">
          android:fromDegrees="0"
          android:toDegrees="7"
          android:pivotX="50%"
          android:pivotY="50%"
          android:repeatCount="infinite"
          android:repeatMode="reverse"//這個屬性是定義動畫播放完後再尾向頭播放
          android:duration="200"/>

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