比如一些拖动 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();
}
});
}
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.