晚上下班看到有美女骑车,就想做一个车轮滚动的效果,空间有限,就没有一直滚,我做的车轮是左右滚动:
效果图:
//车轮半径
int radius = centerImg.getHeight()/2;
final ValueAnimator valueAnimator = ValueAnimator.ofFloat(0.0f,-1.0f,1.0f);
valueAnimator.setDuration(500);
valueAnimator.setInterpolator(new LinearInterpolator());
valueAnimator.setRepeatCount(Animation.INFINITE);
valueAnimator.setRepeatMode(Animation.REVERSE);
final float scrollLength = 100.0f;
//每滚动一个scrollLength,则轮子旋转的角度
final float angleToTrans = (float) ((scrollLength / (2*Math.PI*radius)) * 360.0f);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
private boolean isFirst = true;
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float fraction = (float) animation.getAnimatedValue();
centerImg.setTranslationX(scrollLength * fraction);
centerImg.setRotation(angleToTrans * fraction);
if(isFirst && Math.abs(fraction) >=0.9f){
//第一次是从中间滚到左边,之后就两头滚了
isFirst = false;
valueAnimator.cancel();
valueAnimator.setFloatValues(fraction,1.0f);
valueAnimator.start();
}
}
});
valueAnimator.start();
本文介绍了一种使用Java代码实现车轮滚动动画的方法。通过ValueAnimator类控制车轮图片的平移和旋转,模拟出从中间向两边滚动的效果。

1049

被折叠的 条评论
为什么被折叠?



