8

我正在构建一个 Android 应用程序,我想创建一个非常类似于 MIUI 文件资源管理器底部的进度条

MIUI 文件浏览器应用

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

  • 将许多具有透明背景的进度条层叠在一起
  • 扩展进度条类,取多个值,重写onDraw方法

我认为第一个选项太慢且效率低下,但第二个选项可能过于复杂,但绝对是更好的解决方案。

有没有更好的方法来解决这个问题?

4

5 回答 5

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);
于 2012-06-07T11:24:55.770 回答
1

一种选择是根本不让它成为传统的进度条。在我的一个个人应用程序中,我需要一个类似于圆形进度条的显示器,它有不同颜色的部分。

我是否建议您首先绘制一个填充矩形,从 0B 到 14.9GB 的颜色用于音乐,从 939MB 到 14.9GB 的颜色用于视频,从 3.52GB 到 14.9GB 的颜色用于图片,等等。

然后,您可以将背景颜色的圆形末端绘制为蒙版。

这将非常快,因为您只绘制图形基元,并且可以根据需要扩展它。

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

于 2012-06-07T11:26:23.060 回答
1

对于其他可以提供帮助的人,我根据@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)

链接:https ://github.com/EKRLAZ/segmented-progressbar

在此处输入图像描述

于 2020-12-10T01:21:39.333 回答
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" />

https://github.com/muneikh/SegmentedProgressBar

在此处输入图像描述

于 2016-01-26T19:13:20.737 回答
-1

亲爱的,请在 api demo 中查看 android SKD 2.2 的示例API Demo中的构建转到查看 -> 进度条 -> 增量,然后您会看到问题的解决方案。

于 2012-06-07T11:43:41.687 回答