gpt4 book ai didi

android - 在搜索栏中的两个连续进度点之间添加流畅的动画

转载 作者:行者123 更新时间:2023-11-30 05:09:26 25 4
gpt4 key购买 nike

我试图在设置进度时平滑地设置搜索栏的动画,比如从 1 到 2 的进度。

我曾尝试使用带有插值器的 ObjectAnimator 设置动画,但它只在进度点移动。将搜索栏的最大值设置为较高的值以实现更平滑的滚动不是一种选择。

我确实找到了一个版本的 setProgress - setProgress (int progress, boolean animate) 在连续的进度点之间以我想要的方式为搜索栏设置动画。

但是无法像 ObjectAnimator 那样设置持续时间或自定义动画。

关于如何实现可以自定义此类动画属性的结果的任何解决方案?

最佳答案

解决方案是将 ProgressBar 的最大值设置得非常高。为确保用户仍然只能在更大的步长中选择值,请设置一个 onSeekBarChangeListener 并将输入值四舍五入并将此值设置为进度。

假设您有一个 ProgressBar,用户可以在其中选择 0 到 10。在开始时,选择了 2。

seekBar = findViewById(R.id.seekBar);
seekBar.setMax(10*100);
seekBar.setProgress(2*100);
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener(){

@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
//if the progress change is triggered by the user, update progress to closest value
if (fromUser) {
seekBar.setProgress(Math.round((float)progress / 100) * 100);
}
}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {

}

@Override
public void onStopTrackingTouch(SeekBar seekBar) {

}
});

然后通过ObjectAnimator触发动画:

public void animateSeekbar(int toProgress) {
ObjectAnimator animation = ObjectAnimator.ofInt(seekBar, "progress", toProgress*100);
animation.setDuration(1000);
animation.start();
}

现在用户只需选择几个值,动画仍然可以顺利完成。希望对您有所帮助。

关于android - 在搜索栏中的两个连续进度点之间添加流畅的动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53971416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com