有多种颜色搜索栏或进度条(Seekbar or progress bar with multiple

2019-09-02 03:12发布

我想创建这样的最初一栏时,进度是零它会在颜色褪色,但和进步的推移它会成为那部分亮(这是最好的,我可以解释)主要的事情是我想要条来显示所有颜色在同一时间。

Answer 1:

剪辑你的“上”绘制:
在你的“关”绘制:

通过使用res/drawable/custom_progress_drawable.xml

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

    <!-- Background -->
    <item
        android:id="@android:id/background"
        android:drawable="@drawable/custom_progress_bar_off"/>

    <!-- Secondary progress - this is optional -->
    <item android:id="@android:id/secondaryProgress">
        <clip android:drawable="@drawable/custom_progress_bar_secondary" />
    </item>

    <!-- Progress -->
    <item android:id="@android:id/progress">
        <clip android:drawable="@drawable/custom_progress_bar_on" />
    </item>

</layer-list>

从一个Activity ,利用

Drawable progressDrawable = ResourcesCompat.getDrawable(getResources(), R.drawable.custom_progress_drawable, getTheme());
myProgressBar.setProgressDrawable(progressDrawable);

或在XML中,使用

android:progressDrawable="@drawable/custom_progress_drawable"

而当使用这里的结果android:max="10"在XML:

这是一个有点过,但你可以使用setMax()的东西更像是10000和打电话时做一些抵消计算setProgress()使之清洁。



Answer 2:

最后! 我去的任务就是要算出这个给你,所以如果这个就足够了,随时给我奖金,哈哈。


试着在你的布局使用这样的:

    <View android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight=".20"/>

            <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="0dip"
                android:orientation="horizontal"
                android:gravity="center"
                android:layout_weight="0.62">
                <View android:layout_width="0dip"
                    android:layout_height="fill_parent"
                    android:layout_weight=".03"/>
                <ProgressBar style="?android:attr/progressBarStyleHorizontal"
                    android:layout_width="0dip"
                    android:layout_height="fill_parent"
                    android:layout_weight="0.94"
                    android:progressDrawable="@drawable/progressmask"
                    android:progress="0"
                    android:max="10"
                    android:rotation="180"/>
                <View android:layout_width="0dip"
                    android:layout_height="fill_parent"
                    android:layout_weight=".03"/>
            </LinearLayout>
    <View
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight=".18"/>
</LinearLayout>

它引用该绘制(progressmask.xml):

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
    <shape>
        <corners android:radius="50dip" />
        <gradient android:startColor="#00000000" android:endColor="#00000000" android:angle="270" />
        <stroke android:width="1dp" android:color="#00000000" />
    </shape>
</item>
<item android:id="@android:id/progress">
    <clip>
        <shape>
            <corners android:radius="50dip" />
            <gradient android:startColor="#aa000000" android:endColor="#aa000000"
                android:angle="270" />
            <stroke android:width="1dp" android:color="#00000000" />
        </shape>
    </clip>
</item>
</layer-list>

并且该图像(colorprogress.png)

它的作用是将图像作为一个的LinearLayout的背景,其中包含一个进度条。 进度条增加了一个半透明的黑色掩模图像,以使其显示灯熄灭。

注意:为了得到这个影响,我不得不用进度条猴子(即翻转,并将其设置为仅10个间隔你将不得不做一些数学来获得进步与图像排队即setprogress ((100-trueprogress)/ 10)。对不起,我没有做这部分你。

这是它的样子,在进度50%(小X和三角形将消失在设备上)

我希望这回答了你的问题!



Answer 3:

像已经建议,我认为你应该去一个层列表和设置多个可绘制即可。 在这个主要问题是,我必须调整大小。 一个固定大小的解决方案是非常容易实现。



Answer 4:

你不能真正设置进度条,以不同的颜色。 但是,您可以仅使用on绘制,并得到你想要的效果。 你可以只应用一个图层蒙版。 我的意思是添加一个相对布局,最初是说dark grey整个即坡度只有一个颜色是深灰色。 现在,使用代码来设置左侧的渐变颜色编程。 显然,在左边的颜色将是透明的。 了解更多关于线性渐变 。 仅此而已。 你只需要计算位置从那里右边的渐变开始,而在左边的渐变( transparent )结束。

这种方法略有瑕疵,可能不是所有的设备上工作。

完美无瑕的方法是创建多个.9png图像和设定的进度,每次编程对话框的绘制。



文章来源: Seekbar or progress bar with multiple colors