安卓帶計時器的屬性動畫:TimeAnimator

TimeAnimator

imeAnimator:提供了一個簡單的回調機制,通過 TimeAnimator.TimeListener,在動畫的每一幀處通知你。這個動畫器沒有時間,插值或是對象值設定。回調監聽器爲每一幀動畫接受信息,包括總運行時間和從前一幀到現在的運行時間.

相關方法:

setTimeListener(TimeAnimator.TimeListener listener):設置監聽器.

start():開始動畫

 

TimeAnimator.TimeListener:

實現這個接口可以對動畫的每一幀進行監聽

onTimeUpdate(TimeAnimator animation, long totalTime, long deltaTime)

animation:發出通知的動畫

totalTime:動畫開始以來的總時間,以毫秒爲單位

deltaTime:從前一幀到現在的運行時間,以毫秒爲單位

在Android 3.0中,新引入了除補間動畫Tween Animation、幀動畫Frame Animation以外的第三種動畫,屬性動畫Property Animation就是ValueAnimator類.特點:ValueAnimator通過改變對象的屬性值來實現界面的改變,而其他動畫,只是界面顯示上的改變,動畫結束後,你會發現,即使view已經運動到別的位置,但click事件還是在原來的地方,ValueAnimator不會有這個問題。ValueAnimator有兩個子類,一個是TimeAnimator,一個是ObjectAnimator。
TimeAnimator在api 16才引入,它並不能直接實現動畫效果,而是在TimeListener裏返回動畫持續的時間,與上次調用的間隔時間,要怎麼改變view,需要自己操作。
ObjectAnimator可以直接改變對象的屬性值,比如,我們可以通過改變ProgressBar的progress屬性,實現進度的改變.

  • ObjectAnimator objectAnimator=ObjectAnimator.ofInt(progressBar,"progress",1,100);
  • objectAnimator.setDuration(10000);
  • objectAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
  • objectAnimator.start();
  •  
  • //api 16 android 4.1以上版本纔有
  • TimeAnimator timeAnimator=new TimeAnimator();
  • timeAnimator.setTimeListener(new TimeAnimator.TimeListener() {
  • @Override
  • public void onTimeUpdate(TimeAnimator animation, long totalTime, long deltaTime) {
  • System.out.println(totalTime+" "+deltaTime);
  • }
  • });
  • timeAnimator.start();;
具體使用:

TimeAnimator timeAnimator = new TimeAnimator();
timeAnimator.setStartDelay(100);
timeAnimator.start();
timeAnimator.setInterpolator(new AccelerateInterpolator()); //添加快速的插值器
timeAnimator.setTimeListener(new TimeAnimator.TimeListener() {
    @Override
    public void onTimeUpdate(TimeAnimator animation, long totalTime, long deltaTime) {
       
    }
});
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章