我正在努力使一个SeekBar的移动更顺利,而不是直接跳到这个位置.我这样做,因为我有一个SeekBar,有3个选项用于滑块类型的实现.
我正在寻找一个很好的平滑滑块,有3个选项“是”,“无选项”,“否”,我的应用程序中的功能和SeekBar看起来最好最简单的方法.
我试过看看Android动画,似乎有点复杂,所以如果任何人可以有任何帮助,将是很好:)
解决方法
我找到了以下解决方案,使搜索引擎平稳运行,但仍然捕捉到有限的价值范围.假设您的布局中有以下视图:
<SeekBar android:id="@+id/sldProgress" style="@style/MySliderStyle" android:layout_width="match_parent" android:layout_height="wrap_content" android:max="100" android:progress="50" /> <TextView android:id="@+id/lblProgress" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="5" />
您可以在活动中使用以下代码(在上述xml中更改android:max的值,根据需要更改下面代码中的平滑因子) – 更高的值=更平滑):
public class MyActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); sliderListener sldListener = new sliderListener(); SeekBar sldProgress = (SeekBar) findViewById(R.id.sldProgress); sldProgress.setOnSeekBarChangeListener(sldListener); } private class sliderListener implements OnSeekBarChangeListener { private int smoothnessFactor = 10; public void onProgressChanged(SeekBar seekBar,int progress,boolean fromUser) { progress = Math.round(progress / smoothnessFactor); TextView lblProgress = (TextView) findViewById(R.id.lblProgress); lblProgress.setText(String.valueOf(progress)); } public void onStartTrackingTouch(SeekBar seekBar) { } public void onStopTrackingTouch(SeekBar seekBar) { seekBar.setProgress(Math.round((seekBar.getProgress() + (smoothnessFactor / 2)) / smoothnessFactor) * smoothnessFactor); } } }