安卓动画 ObjectAnimator 设置变速

比如说设置了一个duration是10000,可不可以让这个动画的前三分之一是5s,中间三分之一是2s,最后三分之一是3s这样?如果不能的话要用什么方法实现?

那可不可以直接放三个动画,三个动画的时间设置不一样就行了啊

用属性动画是可以实现你要的需求的,如下的参数tx,前5s是每秒匀速前进10,中间2s是每秒后退100,最后3s是每秒前进500

public static void startBiggerCallAnim2(final View view) {
String translationXPropertyName = "translationX";
// 生成一个透明度变化的valuesHolder,其他同上
// PropertyValuesHolder ah = PropertyValuesHolder.ofFloat(ALPHA, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f);
// PropertyValuesHolder rh = PropertyValuesHolder.ofFloat(ROTATION, 0, 360);
// PropertyValuesHolder sxh = PropertyValuesHolder.ofFloat(SCALEX, 1.0f, 1.7812f);
// PropertyValuesHolder syh = PropertyValuesHolder.ofFloat(SCALEY, 1.0f, 1.7812f);
PropertyValuesHolder tx = PropertyValuesHolder.ofFloat(translationXPropertyName, 10, 20, 30, 40, 50,
-200, -500, 500, 1000, 1500);
ObjectAnimator oa = ObjectAnimator.ofPropertyValuesHolder(view, /*ah, rh, sxh, syh,*/tx);
oa.setInterpolator(new LinearInterpolator());
oa.setRepeatCount(ValueAnimator.INFINITE);
oa.setRepeatMode(ValueAnimator.RESTART);
oa.setDuration(10000L);
oa.start();
}

     PropertyValuesHolder.ofFloat(translationXPropertyName, 10, 20, 30, 40, 50,
            -200, -500, 500, 1000, 1500);这个方法会根据参数的差值比例,比如这里,5:2:3将你的时间分割出来。