比如一些拖动 UI 的效果,放大缩小的效果等,因为涉及到频繁的 ObjectAnimator#cancel 和 ObjectAnimator#start ,但是我不知道为什么我就是弄不出那种效果,应该这里关键的部分是 setDuration 那里吧?
public class MainActivity extends AppCompatActivity {
private final int DURATION=1000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Slider slider = findViewById(R.id.slider);
CircleView circleView = findViewById(R.id.circle_view);
ObjectAnimator animator = ObjectAnimator.ofInt(circleView, "width", 0, ((int) slider.getValueTo()));
slider.addOnChangeListener(new Slider.OnChangeListener() {
@Override
public void onValueChange(@NonNull Slider slider, float value, boolean fromUser) {
animator.cancel();
animator.setIntValues((int) animator.getAnimatedValue(),(int)value);
animator.setDuration((long) (DURATION*((100-(int)animator.getAnimatedValue())/slider.getValueTo())));
animator.start();
}
});
}
}