安卓带计时器的属性动画:TimeAnimator

TimeAnimator

安卓带计时器的属性动画:TimeAnimator_第1张图片

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

你可能感兴趣的:(开发技术积累)