有时项目中需要实现水平圆角进度,如下两种,其实很简单

 
 

下面开始看代码,先从主界面布局开始看起:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:tools="http://schemas.android.com/tools"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent"
  6. android:gravity="center"
  7. android:orientation="vertical">
  8.  
  9. <ProgressBar
  10. android:id="@+id/progressbar1"
  11. style="@android:style/Widget.ProgressBar.Horizontal"
  12. android:layout_width="match_parent"
  13. android:layout_height="20dp"
  14. android:layout_margin="10dp"
  15. android:max="100"
  16. android:progress="50"
  17. android:progressDrawable="@drawable/layer_list_progress_drawable_1" />
  18.  
  19. <ProgressBar
  20. android:id="@+id/progressbar2"
  21. style="@android:style/Widget.ProgressBar.Horizontal"
  22. android:layout_width="match_parent"
  23. android:layout_height="20dp"
  24. android:layout_margin="10dp"
  25. android:max="100"
  26. android:progress="20"
  27. android:progressDrawable="@drawable/layer_list_progress_drawable" />
  28.  
  29. </LinearLayout>

  

两个进度条布局,然后是不同的progressDrawable布局:
layer_list_progress_drawable_1.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  3.  
  4. <item
  5. android:id="@android:id/background"
  6. android:drawable="@drawable/shape_progressbar_bg" />
  7.  
  8. <item android:id="@android:id/progress">
  9. <clip android:drawable="@drawable/shape_progressbar_progress" />
  10. </item>
  11. </layer-list>

  

layer_list_progress_drawable.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  3.  
  4. <item
  5. android:id="@android:id/background"
  6. android:drawable="@drawable/shape_progressbar_bg" />
  7.  
  8. <item android:id="@android:id/progress">
  9. <scale
  10. android:drawable="@drawable/shape_progressbar_progress"
  11. android:scaleWidth="100%" />
  12. </item>
  13. </layer-list>

  

从上面两布局文件可以看出,布局文件基本也是相同的,唯一的区别就是一个用的是clip另一个用的是scale
如果在layer-list里面进行设置的话,也是要注意item的添加顺序。

下面是背景,和进度文件:
shape_progressbar_bg.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <shape xmlns:android="http://schemas.android.com/apk/res/android">
  3.  
  4. <corners android:radius="10dp" />
  5. <solid android:color="#dadada" />
  6.  
  7. </shape>

  

shape_progressbar_progress.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <shape xmlns:android="http://schemas.android.com/apk/res/android">
  3.  
  4. <corners android:radius="10dp" />
  5. <solid android:color="#0484fa" />
  6.  
  7. </shape>

  

自定义Android进度条ProgressBar颜色的渐变

自定义Android进度条ProgressBar颜色的渐变其实也很简单,就拿第一个水平进度来说吧,只需要修改一个layer_list_progress_drawable_1.xmllayer_list_progress_drawable.xml就可以了
layer_list_progress_drawable_1.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  3.  
  4. <item
  5. android:id="@android:id/background"
  6. android:drawable="@drawable/shape_progressbar_bg" />
  7.  
  8. <item android:id="@android:id/progress">
  9. <clip android:drawable="@drawable/shape_progressbar_progress" >
  10. <shape>
  11. <corners android:radius="10dp" />
  12. <!--<gradient-->
  13. <!--android:startColor="#00FF00"-->
  14. <!--android:centerColor="#FFFF00"-->
  15. <!--android:endColor="#FF0000"/>-->
  16. <!--在gradient这里设置不同的颜色就会产生渐变的效果-->
  17. <gradient
  18. android: startColor ="#0484fa"
  19. android: endColor ="#ff00ff" />
  20.  
  21. </shape>
  22. </clip>
  23. </item>
  24. </layer-list>

  

layer_list_progress_drawable.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  3.  
  4. <item
  5. android:id="@android:id/background"
  6. android:drawable="@drawable/shape_progressbar_bg" />
  7.  
  8. <item android:id="@android:id/progress">
  9.  
  10. <scale
  11. android:drawable="@drawable/shape_progressbar_progress"
  12. android:scaleWidth="100%">
  13. <shape>
  14. <corners android:radius="10dp" />
  15. <!--<gradient-->
  16. <!--android:startColor="#00FF00"-->
  17. <!--android:centerColor="#FFFF00"-->
  18. <!--android:endColor="#FF0000"/>-->
  19. <!--在gradient这里设置不同的颜色就会产生渐变的效果-->
  20.  
  21. <gradient
  22. android: startColor ="#0484fa"
  23. android: endColor ="#ff00ff" />
  24.  
  25. </shape>
  26. </scale>
  27. </item>
  28. </layer-list>

  

效果如下图:

 

参考于:https://www.jianshu.com/p/c8193ba61195

Android 自定义水平进度条的圆角进度的更多相关文章

  1. 我的Android进阶之旅------>Android自定义View实现带数字的进度条(NumberProgressBar)

    今天在Github上面看到一个来自于 daimajia所写的关于Android自定义View实现带数字的进度条(NumberProgressBar)的精彩案例,在这里分享给大家一起来学习学习!同时感谢 ...

  2. 微信小程序 progress 进度条 内部圆角及内部条渐变色

    微信小程序progress进度条内部圆角及渐变色 <view class="progress-box"> <progress percent="80&q ...

  3. Axure教程:滑动进度条、圆形进度环的复杂交互效果实现方法

    滑动条.进度条.进度环,是产品原型中比较常见的进度展示功能.今天笔者分享的是使用Axure原型工具实现两种进度展示功能中相对复杂的交互效果. 效果一.可拖动.可显示进度值.可计算多个页面均值的滑动进度 ...

  4. 超赞的CSS3进度条 可以随进度显示不同颜色

    原文:超赞的CSS3进度条 可以随进度显示不同颜色 现在的WEB已经不是以前的WEB了,传输更大的数据量,有着更加复杂的计算,这就需要利用进度条来提高用户体验,必要时可以让用户耐心等待,不至于因操作卡 ...

  5. Xamarin XAML语言教程使用属性设置进度条的当前进度

    Xamarin XAML语言教程使用属性设置进度条的当前进度 在图12.19~12.21中我们看到的是没有实现加载的进度条,即进度条的当前进度为0,如果开发者想要修改当前进度,可以使用两种方式:一种是 ...

  6. MFC读写.txt文件时进度条显示实时进度

    整体实现方式:先获得文件长度,然后用每次读取的长度,计算出完成的百分比,用百分比的值设置进度条. 一.MFC进度条 Progress Control 相关函数 1. create() --创建Prog ...

  7. Android 梯形进度条、下载进度条;

    额,Gif有点卡: 梯形.矩形.圆角.背景色.前景色.进度条中的文字都可以改: <?xml version="1.0" encoding="utf-8"? ...

  8. Android自定义Seekbar拖动条式样

    SeekBar拖动条可以由用户控制,进行拖动操作.比如,应用程序中用户需要对音量进行控制,就可以使用拖动条来实现. 1.SeekBar控件的使用 1.1SeekBar常用属性 SeekBar的常用属性 ...

  9. CSS实现进度条和订单进度条

    最近半个月为了期末考试,可要了学渣我半瓶血啊!今天本该好好复习的,可是状态不好,就随便找点乐子玩一玩,于是乎就想起之前面试时面试官给的一道题(见标题),那就弄点简单的小玩意给自己洗洗脑咯. 简单地效果 ...

随机推荐

  1. 一文解读5G (转)

    今天要研究的对象,是5G接入网. 什么是接入网?相信不少同学,对这个概念一定不会陌生. 搬出这张移动通信架构图: 接入网,在我们无线通信里,一般指无线接入网,也就是通常所说的RAN(Radio Acc ...

  2. ssh 使用指定网卡 连接特定网络

    有时候,当电脑有两个网卡时:一个网卡 连接免费网络,一个网卡连接收费网络.这样当你想使用免费网络与远程服务器建立连接,使用诸如scp命令或者 ssh 隧道之类传输大文件.这时候你需要指定特定的特定的网 ...

  3. 使用Apache服务部署静态网站2019-7-5

    使用Apache服务部署静态网站 第1步:把镜像挂载到系统中 第2步:使用vim文件编辑器创建YUM仓库的配置文件 [root@study ~]# vim /etc/yum.repos.d/abc.r ...

  4. 基于tiny4412的Linux内核移植 --- aliases节点解析【转】

    转自:https://www.cnblogs.com/pengdonglin137/p/5252348.html 阅读目录(Content) 作者信息 平台简介 正文 回到顶部(go to top) ...

  5. Java面试题-基础篇一(干货篇)

    1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致. 2.Java有 ...

  6. Sqlserver 2014 下载

    ed2k://|file|cn_sql_server_2014_enterprise_edition_x64_dvd_3932882.iso|2898847744|A33CE10CD989083D1A ...

  7. luoguP4331 [BOI2004]Sequence 数字序列

    题意 大力猜结论. 首先将所有\(a_i\)变为\(a_i-i\),之后求不严格递增的\(b_i\),显然答案不变,最后\(b_i\)加上\(i\)即可. 考虑两种特殊情况: 1.\(a[]\)是递增 ...

  8. go 通过select实现超时

    package main import ( "fmt" "time" ) func main() { ch := make(chan int) quit := ...

  9. Excel已损坏,无法打开

    突然之间,很多EXCEL文件打开时报错:"已损坏,无法打开",这些文件共同点是从邮件中下载而来,这些文件可能面临着安全威协,原来是软件设置了受保护的视图,取消即可.

  10. usb设备在sysfs中的命名规范

    "root-hub的编号"-"设备(或者hub)插入的端口号"[."设备(或者hub)插入的端口号"]:"USB设备配置号&quo ...