您的位置:首页 > 移动开发 > Android开发

android 属性动画 vs 延时实现动画

2016-03-07 22:32 92 查看

属性动画

我们用属性动画实现动画常用的代码:

ObjectAnimator.ofFloat(targetView,"translateX",0,100)
.setDuration(1000).start();


属性动画一般只能实现一些比较简单的动画,使用View的scrollTo却能实现复杂动画,下面结合属性动画和scrollTo实现动画:

final int startX = 0;
final int deltaX = 100;
ValueAnimator animator = ValueAnimator.ofInt(0,1)
.setDuration(100);
animator.addUpdateListener(new AnimatorUpdateListener(){
public void updateAnimation(ValueAnimator animator)
{
float fraction = animator.getAnimatorFraction();
tartView.scrollTo((startX + (int)(fraction*deltaX)),0);
}
});


通过获取fraction从0到1的渐变过程,从而实现scrollTo的弹性滑动,以便通过属性动画实现一些复杂动画。

延时实现动画

延时实现动画有三种方式:

1. handler;

2. view本身的postDelay;

3. 子线程sleep.

现在只介绍第一种~

代码如下:

private int count = 0;
private static final int FRACTION = 100;
private static final int DELAY_TIME = 50;
private static final int ANIMATION_ING = 1;
Handler mHandler = new Handler(){
public void handleMessage(Message msg){
switch(msg.what){
case ANIMATION_ING:
count++;
if(count <= FRACTION){
float fraction = count/(float)FRACTION;
int scrollX = (int)fraction*100;
tartView.scrollTo(scrollX,0);
mHanlder.sendEmptyMessageDelayed(ANIMATION_ING,DELAY_TIME);
}
break;
}
}
};


上面两种实现动画的方式,最终目的都是为了更好的理解View本身的方法scrollTo和scrollBy,写了几篇文章后,我自己确实要明白了不少~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: