我想创建这样的最初一栏时,进度是零它会在颜色褪色,但和进步的推移它会成为那部分亮(这是最好的,我可以解释)主要的事情是我想要条来显示所有颜色在同一时间。
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
图像和设定的进度,每次编程对话框的绘制。