我試圖使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