数值动画如何设置后固定在原地或者继续移动?
https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ui-java-animation-0000000000580278
官方文档中数值动画部分,动画每次启动都是从一个地方开始。
下面的是官方文档代码部分
声明AnimatorValue
AnimatorValue animatorValue = new AnimatorValue();
使用数值动画。设置变化属性。
animatorValue.setDuration(2000);
animatorValue.setDelay(1000);
animatorValue.setLoopedCount(2);
animatorValue.setCurveType(Animator.CurveType.BOUNCE);
添加回调事件。
animatorValue.setValueUpdateListener(new AnimatorValue.ValueUpdateListener() {
@Override
public void onUpdate(AnimatorValue animatorValue, float value) {
button.setContentPosition((int) (800 * value), button.getContentPositionY());
}
});
启动动画或对动画做其他操作。
animatorValue.start();
我的意思是官方文档这个动画永远都是从A移动一定的距离到B,然后下一次动画再重复这个过程。
如何做到从A到B,第二次从B到C ?
AnimatorValue animatorValue1 = new AnimatorValue();
animatorValue1.setDuration(2000);
animatorValue1.setLoopedCount(0);
animatorValue1.setCurveType(Animator.CurveType.BOUNCE);
animatorValue1.setValueUpdateListener(new AnimatorValue.ValueUpdateListener() {
@Override
public void onUpdate(AnimatorValue animatorValue, float value) {
text.setContentPosition((int) (300 * value), text.getContentPositionY());
}
});
animatorValue1.start();
try {
Thread.currentThread().sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
AnimatorValue animatorValue2 = new AnimatorValue();
animatorValue2.setDuration(3000);
animatorValue2.setDelay(3000);
animatorValue2.setLoopedCount(0);
animatorValue2.setCurveType(Animator.CurveType.BOUNCE);
animatorValue2.setValueUpdateListener(new AnimatorValue.ValueUpdateListener() {
@Override
public void onUpdate(AnimatorValue animatorValue, float value) {
text.setContentPosition(300 + (int) (500 * value), text.getContentPositionY());
}
});
animatorValue2.start();