Java 创建分段进度条的最佳方法?
我正在构建一个Android应用程序,我想创建一个进度条,非常类似于在MIUI文件浏览器底部看到的进度条 据我所知,没有完全显而易见的解决办法。 到目前为止我能想到的是Java 创建分段进度条的最佳方法?,java,android,user-interface,Java,Android,User Interface,我正在构建一个Android应用程序,我想创建一个进度条,非常类似于在MIUI文件浏览器底部看到的进度条 据我所知,没有完全显而易见的解决办法。 到目前为止我能想到的是 以透明背景将多个进度条层叠在一起 扩展进度条类以获取多个值并重写onDraw方法 我认为第一个方案速度太慢,效率太低,但第二个方案可能过于复杂,但肯定是更好的解决方案 有什么更好的方法吗?您应该为其创建自定义视图。例如: final Paint blue = new Paint(); blue.setColor(Color
- 以透明背景将多个进度条层叠在一起
- 扩展进度条类以获取多个值并重写onDraw方法
有什么更好的方法吗?您应该为其创建自定义视图。例如:
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);
一个选择是根本不让它成为传统的进度条。在我的一个个人应用程序中,我需要一个类似于圆形进度条的显示器,它有不同颜色的部分 我建议您首先绘制一个填充矩形,音乐颜色从0B到14.9GB,视频颜色从939MB到14.9GB,图片颜色从3.52GB到14.9GB,等等 然后,您可以只绘制背景色中的圆形端点作为遮罩 这将是相当快的,因为您只绘制图形原语,并且可以根据需要对其进行扩展
唯一的一个小缺点是你必须自己实现大部分逻辑,但在我看来,这是一个很小的代价。亲爱的,请查看API演示中android SKD 2.2的内置示例API演示,进入查看->进度条->增量,然后您就会看到问题的解决方案。这是基于@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" />
SegmentedProgressBar progressBar=(SegmentedProgressBar)findViewById(R.id.SegmentedProgressBar);
progressBar.setProgressColor(Color.BLACK);
progressBar.出版进度(0.5f);
对于其他能够提供帮助的人,我在我的github上留下了一个基于@Zelleriation answer的示例。进度条
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" />
这适合我的需要,请随意修改为您的。
<io.ekrlaz.segmentedprogressbar.view.SegmentProgressBar
android:id="@+id/progress"
android:layout_width="match_parent"
android:layout_height="10dp"
app:cornerRadius="16dp"
/>
链接:
标准进度条严格限制为两段。虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。-@约翰·斯卡尔:谢谢你强调这一点。我已更新了答案,以包含基本信息。