2013-05-04 75 views
4

我正在使用自定義的seekbar來顯示圖形。我一直這樣做。我通過在seekbar上應用可繪製背景來顯示此圖。現在我的問題是,我需要將藍色設置爲可繪製進度,並且需要將seekbar的背景設置爲紅色圖形。因此,當進展發生時,拇指移過紅色區域,拇指通過的區域應該改變爲藍色,就像遮掩效果一樣。任何人都可以告訴最好的方法來做到這一點。我的照片如下所示Secondary progressBackground自定義Seekbar帶有兩個可繪製的遮罩效果?

回答

5

閱讀完所有的問題和答案,我希望在此之後應該是你的方案來完成你的事情......

1.創建兩個圖表 根據您的邏輯。從特定的位圖

2.Generate 2個drwables ....

Drawable G_bg = new BitmapDrawable(Red graph bitmap); 
Drawable G_pg = new BitmapDrawable(Blue graph bitmap); 

3.And然後使用通過Java代碼中創建圖層列表自定義搜索欄。

ClipDrawable c=new ClipDrawable(G_pg, Gravity.LEFT,ClipDrawable.HORIZONTAL); 
LayerDrawable ld =new LayerDrawable (new Drawable[]{G_bg,c}); 

4.將此圖層列表應用於您的seekbar。

Graphbar.setProgressDrawable(ld); 

這應該像你想.... Thanksss

0

您應該爲您的SeekBar使用自定義progressDrawable。請參閱this blog post瞭解更多教程。

+0

我去通過這個一個。這是關於裁剪一個小圖像並顯示進度的說法。我需要的是使用這個完整的圖像,並顯示像掩蔽的進展。由於它的圖形我不能剪切一張圖片並使用它。 – 2013-05-07 05:04:17

0

您可以創建自定義view.Override它onTouch()方法來改變thumb.Also的位置覆蓋它的onDraw()方法先畫紅色曲線爲您的視圖的背景,然後從位置藍色一個對應於拇指的位置。

2

這不是你想要的嗎?
SeekBarOverlay
my_seek_bar_progress.xml:

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

    <item 
     android:id="@android:id/background" 
     android:drawable="@drawable/red_graph"/> 
    <item android:id="@android:id/progress"> 
     <clip android:drawable="@drawable/blue_graph" /> 
    </item> 

</layer-list> 

在片段或活動佈局:

<com.example.seekbaroverlay.MySeekBar 
    android:id="@+id/mySeekBar1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:max="100" /> 

MySeekBar.java:

public class MySeekBar extends SeekBar { 

    public MySeekBar(Context context) { 
     this(context, null); 
    } 

    public MySeekBar(Context context, AttributeSet attrs) { 
     this(context, attrs, 0); 
    } 

    public MySeekBar(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     setProgressDrawable(context.getResources().getDrawable(R.drawable.my_seek_bar_progress)); 
     setThumb(context.getResources().getDrawable(R.drawable.my_thumb)); 
    } 
} 
+0

此代碼正在工作。但我的問題是,我通過代碼動態生成這2個圖形,所以我將獲得2個位圖,可以稍後將其轉換爲drawable。是否有任何解決方法,以便我們可以通過java代碼將圖層列表添加到seekbar? – 2013-05-10 06:46:52

+0

我明白了。是的,有一種以編程方式創建圖層列表的方法 - 它在接受的答案中顯示。 – EricRobertBrewer 2013-05-10 19:00:13