我试图使SeekBar移动比直接跳到位置更顺利。我这样做是因为我有一个带有3个选项的SeekBar,用于滑块类型的实现。我该如何让Android搜索栏顺利移动?
我希望创建一个不错的流畅滑盖3选择“是”,“否选项”,“否”为我的应用程序功能和搜索栏看起来最好,最简单的方法。
我试着看的Android动画,似乎稍微有点复杂,因此,如果任何人都可以有所帮助的话,这将是不错的:)
我试图使SeekBar移动比直接跳到位置更顺利。我这样做是因为我有一个带有3个选项的SeekBar,用于滑块类型的实现。我该如何让Android搜索栏顺利移动?
我希望创建一个不错的流畅滑盖3选择“是”,“否选项”,“否”为我的应用程序功能和搜索栏看起来最好,最简单的方法。
我试着看的Android动画,似乎稍微有点复杂,因此,如果任何人都可以有所帮助的话,这将是不错的:)
建立了自己的控制。完成任务:)代码here
我发现下面的解决方案,使搜索条平滑移动,但仍然捕捉到的值的范围有限。假设你已经在你的布局如下观点:
<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" />
您可以使用您的活动将下面的代码(更改了Android的价值:根据下面的代码Max在上面的XML,以及平滑因子您需求 - 高值=平滑):
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);
}
}
}
谁低估了这一点,请解释一下答案的错误 - 请记住,downvoting只用于极度的情况下,如果答案没有付出努力或答案是危险的。如果答案很危险,我想知道为什么!谢谢。 – Russ 2012-09-10 13:02:44
Integer.parseInt(String.valueOf(Math.round(progress/smoothnessFactor)));这看起来不正确。 progress/smoothnessFactor总是会产生一个int,所以不需要四舍五入,然后将它转换为一个字符串,然后返回到int。 – theelfismike 2013-05-03 20:43:28
就是这样吗?几乎不打算你的应用程序是它?我编辑了代码以删除这些不必要的转换(任何人都可以这样做 - 无需投票)。 – Russ 2013-05-05 07:13:31
你并不需要自己构建任何东西只是用户的Android动画它会做的事情,你
在kotlion
writen代码mySeekbar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
//Todo: code
}
override fun onStartTrackingTouch(seekBar: SeekBar?) {
}
override fun onStopTrackingTouch(seekBar: SeekBar) {
if (seekBar.progress > 70) {
ObjectAnimator.ofInt(seekBar, "progress", 100).setDuration(100).start()
} else if (seekBar.progress < 30) {
ObjectAnimator.ofInt(seekBar, "progress", 0).setDuration(100).start()
} else {
ObjectAnimator.ofInt(seekBar, "progress", 50).setDuration(100).start()
}
}
})
+1您可以添加的源代码,这样你将有助于在未来的访客。 – 2012-03-15 22:07:03
我会尽快推送最新版本的应用程序。我认为应用程序的开源反正 – 2012-03-16 08:58:05
作为承诺 - https://github.com/kennydude/Speaker/blob/master/src/me/kennydude/speaker/SmoothSeekBar.java该位置将 – 2012-03-19 14:52:17