首先定义一个ProgressBar:

    <ProgressBar        android:id="@+id/progressBar"        style="?android:attr/progressBarStyleHorizontal"        android:layout_width="300dp"        android:layout_height="wrap_content"        android:indeterminate="false"        android:progress="30"        android:progressDrawable="@drawable/round_progress"        app:layout_constraintBottom_toBottomOf="@+id/name"        app:layout_constraintEnd_toEndOf="parent"        android:layout_marginRight="110dp"        app:layout_constraintTop_toTopOf="@+id/name" />

设置style 是横向的,然后设置progressDrawable 为 round_progress.

round_progress.xml 里面如下


情况一:

如果进度左边是圆形,中间是矩形,如下图:

使用下面的xml

<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android" >    <item android:id="@android:id/background">        <shape            android:shape="rectangle" android:padding = "5dp">            <solid android:color="#FFE8E8E8"/>            <stroke android:color="#FFE8E8E8" android:width="1dp" />            <corners                android:radius="10dp" />        </shape>    </item>    <item android:id="@android:id/secondaryProgress">        <clip>            <shape                android:shape="rectangle" android:padding = "5dp">                <solid android:color="#FFFF0000"/>                <corners                    android:radius="10dp"/>            </shape>        </clip>    </item>    <item android:id="@android:id/progress">        <clip>            <shape                android:shape="rectangle" android:padding = "5dp">                <solid android:color="#FFFF0000"/>                <corners                    android:radius="10dp"/>            </shape>        </clip>    </item></layer-list>

情况二:

如果进度两端都是圆形,如下图


使用下面的xml

<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android" >    <item android:id="@android:id/background">        <shape            android:shape="rectangle" android:padding = "5dp">            <solid android:color="#FFE8E8E8"/>            <stroke android:color="#FFE8E8E8" android:width="1dp" />            <corners                android:radius="10dp" />        </shape>    </item>    <item android:id="@android:id/secondaryProgress">        <scale android:scaleWidth="100%">            <shape                android:shape="rectangle" android:padding = "5dp">                <solid android:color="#FFFF0000"/>                <corners                    android:radius="10dp"/>            </shape>        </scale>    </item>    <item android:id="@android:id/progress">        <scale android:scaleWidth="100%">            <shape                android:shape="rectangle" android:padding = "5dp">                <solid android:color="#FFFF0000"/>                <corners                    android:radius="10dp"                    />            </shape>        </scale>    </item></layer-list>

TODO

layer-list、shape、scale、clip 的使用,真的不太熟悉。

更多相关文章

  1. 弹窗之三:自定义Dialog
  2. Android音乐播放器【支持:速率调节,音调调节,采样率调节】
  3. Android(安卓)Studio 入门:(五) 悬浮按钮增加联系人信息
  4. 仿QQ设置字体大小自定义SeekBar
  5. android BitmapFactory.Options参数介绍
  6. Hardcoded string "下一步", should use @string resource警告
  7. Android(安卓)RadioGroup中设置默认选中RadioButton 后,选中两个
  8. Android自定义圆形图片
  9. android 利用FloatActionButton悬浮按钮实现扇形折叠与隐藏

随机推荐

  1. SQL删除语句DROP、TRUNCATE、 DELETE 的
  2. 详解partition by和group by对比
  3. 分区表场景下的 SQL 优化
  4. SQL Server异常代码处理的深入讲解
  5. SQL Server中的集合运算: UNION, EXCEPT
  6. 图书管理系统的sqlserver数据库设计示例
  7. sql server 交集,差集的用法详解
  8. SQL Server中row_number分页查询的用法详
  9. 秒懂drop、truncate和delete的区别
  10. 详解SQL 通配符