我正在构建一个Android应用程序,我想创建一个非常类似于MIUI文件资源管理器底部所见的进度条
据我所知,没有完全明显的解决方案。 到目前为止,我能想到的是
我认为第一种选择太慢而且效率低,但第二种选择可能过于复杂,但肯定是更好的解决方案。
有没有更好的方法来解决这个问题?
答案 0 :(得分:6)
你应该为它制作一个自定义视图。例如:
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);
答案 1 :(得分:1)
一种选择是根本不使它成为传统的进度条。在我的一个个人应用程序中,我需要一个类似于圆形进度条的显示器,它具有不同颜色的段。
我可以建议你从音乐颜色的0B到14.9GB之间绘制一个填充的矩形,从视频颜色的939MB到14.9GB,从图片颜色的3.52GB到14.9GB,依此类推
然后,您可以将背景颜色的圆角末端绘制为蒙版。
这很快,因为你只是绘制图形基元,你可以根据需要扩展它。
唯一的缺点是你必须自己实施大部分逻辑,但在我看来这是一个很小的代价。
答案 2 :(得分:0)
以下是基于@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" />
答案 3 :(得分:0)
对于其他可以帮助的人,我在基于@Zelleriation答案的github上留下一个示例。进度栏。
这可以适应我的需求,随时将其修改为您的需求。
<io.ekrlaz.segmentedprogressbar.view.SegmentProgressBar
android:id="@+id/progress"
android:layout_width="match_parent"
android:layout_height="10dp"
app:cornerRadius="16dp"
/>
在您的活动中。
val binding = ActivityMainBinding.inflate(layoutInflater)
binding.progress.setMax(100F)
binding.progress.setPrimaryProgress(40F)
binding.progress.setSecondaryProgress(10F)
binding.progress.setThirdProgress(40F)
答案 4 :(得分:-1)
亲爱的请参阅api demo中的android SKD 2.2示例 API演示中的构建转到视图 - &gt;进度条 - &gt;增量然后你看到问题的解决方案。