[Xamarin] 透過 AnimatorSet 製作物件動畫特效,順序播放、暫停播放、繼續撥放、停止播放
2017-02-20
這一篇主要透過AnimatorSet + ObjectAnimator 來製作動畫,當然我這邊要做的動畫非常簡單
有一張圖片id 就是 imageView 主要讓他就是漸層的淡出然後在淡入,很簡單,畢竟要把重點放在AnimatorSet 的操作上..
1. 初始化, 首先我們得先宣告一個 AnimatorSet 命名為 animatorSet
在來就是在 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