3

我正在使用自定义搜索栏来显示图表。我已经做到了。我通过将背景可绘制对象应用于搜索栏来显示此图。现在我的问题是,我需要将蓝色设置为进度可绘制,并且需要将搜索栏的背景设置为红色图形。因此,当进度发生时,拇指移动到红色上方,拇指经过的区域应更改为蓝色,就像蒙版效果一样。任何人都可以告诉最好的方法来做到这一点。我的照片如下所示二次进展背景

4

4 回答 4

5

在阅读完所有问题和答案后,我希望这应该是您完成任务的场景......

1.根据您的逻辑创建两个图表。

2.从特定的位图生成两个drwables....

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

3.然后使用通过java代码创建的层列表自定义您的搜索栏。

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

4.将此图层列表应用到您的搜索栏。

Graphbar.setProgressDrawable(ld);

这应该像你想要的那样工作......谢谢

于 2013-05-10T09:39:26.457 回答
3

这不是你想要的吗?
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));
    }
}
于 2013-05-10T00:22:36.803 回答
0

您应该progressDrawable为您的 SeekBar 使用自定义。请参阅此博客文章以获取出色的教程。

于 2013-05-06T18:41:28.990 回答
0

您可以创建一个自定义视图。覆盖它的onTouch()方法来改变拇指的位置。也覆盖它的onDraw()方法,首先绘制红色图形作为视图的背景,然后从对应于拇指位置的位置绘制蓝色图形。

于 2013-05-07T21:18:55.147 回答