最好的方法来创build分段的进度栏?

我正在构build一个Android应用程序,我想创build一个进度条,就像在MIUI文件资源pipe理器底部看到的一样

MIUI文件浏览器应用程序

据我所知,没有完全明显的解决办法。 到目前为止,我能想到的是

  • 将透明背景的多个进度条层叠在一起
  • 扩展进度栏类以获取多个值并重写onDraw方法

我认为第一个select太慢,效率太低,但第二个select可能过于复杂,但绝对是更好的解决scheme。

有没有更好的方法去做这件事?

Solutions Collecting From Web of "最好的方法来创build分段的进度栏?"

你应该为它做一个自定义的视图。 例:

final Paint blue = new Paint(); blue.setColor(Color.BLUE); View progressBar = new View(getActivity()){ protected void onDraw(android.graphics.Canvas canvas) { canvas.drawRect(0,0,getWidth()*progressPecentFirst,getHeight(),blue); blue.setColor(Color.RED); canvas.drawRect(0,0,getWidth()*progressPecentSecond,getHeight(),blue); //Repeat this }; }; parentLayout.addView(progressBar); 

一种select是不要把它变成一个传统的进度条。 在我的个人应用程序中,我需要一个类似于具有不同颜色段的圆形进度条的显示。

我build议你从0B到14.9GB的填充矩形开始,在音乐的颜色中,从939MB到14.9GB的video颜色,从3.52GB到14.9GB的图片颜色,等等。

然后,您可以将背景颜色的圆angular末端作为蒙版。

这将是非常快的,因为你只是绘制graphics原语,你可以扩展它尽可能多的。

唯一的缺点是你必须自己实现很多逻辑,但是在我看来这是一个小的代价。

这里是基于@Zelleriation答案的分段进度条。 进度条。

  SegmentedProgressBar progressBar = (SegmentedProgressBar) findViewById(R.id.segmentedProgressBar); progressBar.setProgressColor(Color.BLACK); progressBar.publishProgress(0.5f); <com.muneikh.SegmentedProgressBar android:id="@+id/segmentedProgressBar" android:layout_width="match_parent" /> 

https://github.com/muneikh/SegmentedProgressBar

在这里输入图像说明

亲爱的请参阅android SKD 2.2的示例API演示中的api演示版本去查看 – >进度条 – >增量然后你看到你的问题的解决scheme。