2013-05-15 46 views
10

我有一個自定義的seekbar,其中正在更新聲音的進度和最大幅度。因此,搜索欄根據聲音檢測而變化,拇指顯示聲音的最大靈活度。我想將拇指的位置設置到特定位置(Max Amblitude),就像我們在seekbar中設置進度一樣。我經歷了大量的問題和答案,同時我也瀏覽了開發人員文檔。在開發者文檔中,它提到只有偏移量可以保持拇指離開進度軌跡。以編程方式將拇指設置到seekbar的特定位置(而不是偏移量)?

從開發文檔 setThumbOffset(INT thumbOffset) - 設置拇指偏移,允許拇指延伸出的軌道的範圍內。

是否有任何可能的方法將拇指設置到特定位置。示例如下所示。在這裏,我設置了拇指偏移量來顯示一個樣本,而不是這個,我想把拇指設置到一個精確的位置。

enter image description here

回答

2

我想你可以使用setProgress(INT進展)設定拇指的位置,在搜索欄,拇指將在進度表的末尾顯示。
如果你想設置獨立於進度的拇指位置,那麼你可以實現你自己的SeekBar擴展AbsSeekBar,你可以參考SeekBar的src

+0

是遇到了一些後顯示與AbsSeekbar其可能的來源,但你可以plaese讓我知道使用這個實現的任何來源。 –

+0

@SreedevR你可以在這裏看看AbsSeekbar的源代碼:http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/widget/ AbsSeekBar.java#AbsSeekBar瞭解如何繪製拇指以及如何設置位置。 – Bolton

+0

@Sreedev R確切位置的意思就像圖中所示.. ??離實際過程稍遠? – TheFlash

1

使用透明的進度顏色製作custom progress bar

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item 
     android:id="@android:id/background" 
     android:drawable="@drawable/my_background"/> 
    <item android:id="@android:id/progress"> 
     <clip android:drawable="@android:color/transparent" /> 
    </item> 
    <item android:id="@android:id/secondaryProgress"> 
     <clip android:drawable="@drawable/my_visual_progress" /> 
    </item> 

</layer-list> 

使用setSecondaryProgress(int)與 設置進度條的視覺上的「進步」。

並使用setProgress(int)相應地移動拇指。

1

我不明白你真正的意思,但我可以從你說做什麼我做 嘗試使用不同的drawbles 讓我告訴你一個例子什麼理解:

code 的.java

import android.os.Bundle; 
import android.app.Activity; 
import android.graphics.drawable.Drawable; 
import android.widget.SeekBar; 

public class MainActivity extends Activity { 
    private SeekBar seekBar1; 

    private SeekBar seekBar2; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     seekBar1 = (SeekBar) findViewById(R.id.seekBar1); 
     seekBar2 = (SeekBar) findViewById(R.id.seekBar2); 
     seekBar1.setProgress(15); 
     seekBar2.setProgress(55); 
     Drawable ii = getResources().getDrawable(R.drawable.ii); 
     // Drawable iii = getResources().getDrawable(R.drawable.ii); 
     seekBar1.setThumb(ii); 
     seekBar2.setThumb(ii); 

    } 



} 

您的問題:

enter image description here

你可以做的是simple只是重命名同一繪製這樣的:

import android.os.Bundle; 
import android.app.Activity; 
import android.graphics.drawable.Drawable; 
import android.widget.SeekBar; 

public class MainActivity extends Activity { 
    private SeekBar seekBar1; 

    private SeekBar seekBar2; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     seekBar1 = (SeekBar) findViewById(R.id.seekBar1); 
     seekBar2 = (SeekBar) findViewById(R.id.seekBar2); 
     seekBar1.setProgress(15); 
     seekBar2.setProgress(55); 
     Drawable ii = getResources().getDrawable(R.drawable.ii); 
     Drawable iii = getResources().getDrawable(R.drawable.ii); 
     seekBar1.setThumb(ii); 
     seekBar2.setThumb(iii); 

    } 
} 

這就是結果:

enter image description here

相關問題