[Xamarin] 透過 AnimatorSet 製作物件動畫特效,順序播放、暫停播放、繼續撥放、停止播放

2017-02-20

這一篇主要透過AnimatorSet + ObjectAnimator 來製作動畫,當然我這邊要做的動畫非常簡單
有一張圖片id 就是 imageView 主要讓他就是漸層的淡出然後在淡入,很簡單,畢竟要把重點放在AnimatorSet 的操作上..
image

1. 初始化,  首先我們得先宣告一個 AnimatorSet 命名為 animatorSet
image

在來就是在 OnCreate中將他初始化

            animatorSet=new AnimatorSet();
            animatorSet.SetTarget(imageView);


2.播放一次 ,首先,我們先拆解動畫因為一開始圖片是出現的所以我們得讓它消失,之後再出現也就是先fadeOut 之後再做fadeIn 所以我們必須透過 ObjectAnimator 建立動畫,之後讓它循序撥放

            //淡出動畫
            ObjectAnimator aniFadeOut = ObjectAnimator.OfFloat(imageView, "alpha", 1, 0);

            //淡入動畫 
            ObjectAnimator aniFadeIn = ObjectAnimator.OfFloat(imageView, "alpha", 0, 1);

            //淡出時間500毫秒
            aniFadeOut.SetDuration(500);

            //淡入時間3000毫秒
            aniFadeIn.SetDuration(3000);

            //順序播放
            animatorSet.PlaySequentially(aniFadeOut, aniFadeIn);

            //開始
            animatorSet.Start();


3. 循環播放 這時候我們必須要在 OnCreate  animatorSet 初始化之後加入 當動畫結束的事件,並且加入讓它重新播方,這樣就做到循環撥放的效果,如果你要讓它播放一定的次數,你可以自己加入一個count去紀錄

  animatorSet.AnimationEnd += AnimatorSet_AnimationEnd;

AnumationEnd 事件內容

        private void AnimatorSet_AnimationEnd(object sender, System.EventArgs e)
        {
            animatorSet.Start();
        }

這樣播放之後就會循環播放。

4. 暫停播放

animatorSet.Pause();

5. 繼續播放

animatorSet.Resume();

6.停止播放

animatorSet.Cancel();

我測了一下,給需要用到的人

參考文章:
https://developer.xamarin.com/api/field/Android.Views.Animations.Animation.Infinite/
https://developer.android.com/reference/android/animation/AnimatorSet.html


當麻許的超技八 2014 | Donma Hsu Design.