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) { } });