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

下面开始看代码,先从主界面布局开始看起:
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:gravity="center"
- android:orientation="vertical">
- <ProgressBar
- android:id="@+id/progressbar1"
- style="@android:style/Widget.ProgressBar.Horizontal"
- android:layout_width="match_parent"
- android:layout_height="20dp"
- android:layout_margin="10dp"
- android:max="100"
- android:progress="50"
- android:progressDrawable="@drawable/layer_list_progress_drawable_1" />
- <ProgressBar
- android:id="@+id/progressbar2"
- style="@android:style/Widget.ProgressBar.Horizontal"
- android:layout_width="match_parent"
- android:layout_height="20dp"
- android:layout_margin="10dp"
- android:max="100"
- android:progress="20"
- android:progressDrawable="@drawable/layer_list_progress_drawable" />
- </LinearLayout>
两个进度条布局,然后是不同的progressDrawable布局:
layer_list_progress_drawable_1.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"
- android:drawable="@drawable/shape_progressbar_bg" />
- <item android:id="@android:id/progress">
- <clip android:drawable="@drawable/shape_progressbar_progress" />
- </item>
- </layer-list>
layer_list_progress_drawable.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"
- android:drawable="@drawable/shape_progressbar_bg" />
- <item android:id="@android:id/progress">
- <scale
- android:drawable="@drawable/shape_progressbar_progress"
- android:scaleWidth="100%" />
- </item>
- </layer-list>
从上面两布局文件可以看出,布局文件基本也是相同的,唯一的区别就是一个用的是clip
另一个用的是scale
。
如果在layer-list里面进行设置的话,也是要注意item的添加顺序。
下面是背景,和进度文件:
shape_progressbar_bg.xml
- <?xml version="1.0" encoding="utf-8"?>
- <shape xmlns:android="http://schemas.android.com/apk/res/android">
- <corners android:radius="10dp" />
- <solid android:color="#dadada" />
- </shape>
shape_progressbar_progress.xml
- <?xml version="1.0" encoding="utf-8"?>
- <shape xmlns:android="http://schemas.android.com/apk/res/android">
- <corners android:radius="10dp" />
- <solid android:color="#0484fa" />
- </shape>
自定义Android进度条ProgressBar颜色的渐变
自定义Android进度条ProgressBar颜色的渐变其实也很简单,就拿第一个水平进度来说吧,只需要修改一个layer_list_progress_drawable_1.xml
和layer_list_progress_drawable.xml
就可以了
layer_list_progress_drawable_1.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"
- android:drawable="@drawable/shape_progressbar_bg" />
- <item android:id="@android:id/progress">
- <clip android:drawable="@drawable/shape_progressbar_progress" >
- <shape>
- <corners android:radius="10dp" />
- <!--<gradient-->
- <!--android:startColor="#00FF00"-->
- <!--android:centerColor="#FFFF00"-->
- <!--android:endColor="#FF0000"/>-->
- <!--在gradient这里设置不同的颜色就会产生渐变的效果-->
- <gradient
- android: startColor ="#0484fa"
- android: endColor ="#ff00ff" />
- </shape>
- </clip>
- </item>
- </layer-list>
layer_list_progress_drawable.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"
- android:drawable="@drawable/shape_progressbar_bg" />
- <item android:id="@android:id/progress">
- <scale
- android:drawable="@drawable/shape_progressbar_progress"
- android:scaleWidth="100%">
- <shape>
- <corners android:radius="10dp" />
- <!--<gradient-->
- <!--android:startColor="#00FF00"-->
- <!--android:centerColor="#FFFF00"-->
- <!--android:endColor="#FF0000"/>-->
- <!--在gradient这里设置不同的颜色就会产生渐变的效果-->
- <gradient
- android: startColor ="#0484fa"
- android: endColor ="#ff00ff" />
- </shape>
- </scale>
- </item>
- </layer-list>
效果如下图:

参考于:https://www.jianshu.com/p/c8193ba61195
Android 自定义水平进度条的圆角进度的更多相关文章
- 我的Android进阶之旅------>Android自定义View实现带数字的进度条(NumberProgressBar)
今天在Github上面看到一个来自于 daimajia所写的关于Android自定义View实现带数字的进度条(NumberProgressBar)的精彩案例,在这里分享给大家一起来学习学习!同时感谢 ...
- 微信小程序 progress 进度条 内部圆角及内部条渐变色
微信小程序progress进度条内部圆角及渐变色 <view class="progress-box"> <progress percent="80&q ...
- Axure教程:滑动进度条、圆形进度环的复杂交互效果实现方法
滑动条.进度条.进度环,是产品原型中比较常见的进度展示功能.今天笔者分享的是使用Axure原型工具实现两种进度展示功能中相对复杂的交互效果. 效果一.可拖动.可显示进度值.可计算多个页面均值的滑动进度 ...
- 超赞的CSS3进度条 可以随进度显示不同颜色
原文:超赞的CSS3进度条 可以随进度显示不同颜色 现在的WEB已经不是以前的WEB了,传输更大的数据量,有着更加复杂的计算,这就需要利用进度条来提高用户体验,必要时可以让用户耐心等待,不至于因操作卡 ...
- Xamarin XAML语言教程使用属性设置进度条的当前进度
Xamarin XAML语言教程使用属性设置进度条的当前进度 在图12.19~12.21中我们看到的是没有实现加载的进度条,即进度条的当前进度为0,如果开发者想要修改当前进度,可以使用两种方式:一种是 ...
- MFC读写.txt文件时进度条显示实时进度
整体实现方式:先获得文件长度,然后用每次读取的长度,计算出完成的百分比,用百分比的值设置进度条. 一.MFC进度条 Progress Control 相关函数 1. create() --创建Prog ...
- Android 梯形进度条、下载进度条;
额,Gif有点卡: 梯形.矩形.圆角.背景色.前景色.进度条中的文字都可以改: <?xml version="1.0" encoding="utf-8"? ...
- Android自定义Seekbar拖动条式样
SeekBar拖动条可以由用户控制,进行拖动操作.比如,应用程序中用户需要对音量进行控制,就可以使用拖动条来实现. 1.SeekBar控件的使用 1.1SeekBar常用属性 SeekBar的常用属性 ...
- CSS实现进度条和订单进度条
最近半个月为了期末考试,可要了学渣我半瓶血啊!今天本该好好复习的,可是状态不好,就随便找点乐子玩一玩,于是乎就想起之前面试时面试官给的一道题(见标题),那就弄点简单的小玩意给自己洗洗脑咯. 简单地效果 ...
随机推荐
- 一文解读5G (转)
今天要研究的对象,是5G接入网. 什么是接入网?相信不少同学,对这个概念一定不会陌生. 搬出这张移动通信架构图: 接入网,在我们无线通信里,一般指无线接入网,也就是通常所说的RAN(Radio Acc ...
- ssh 使用指定网卡 连接特定网络
有时候,当电脑有两个网卡时:一个网卡 连接免费网络,一个网卡连接收费网络.这样当你想使用免费网络与远程服务器建立连接,使用诸如scp命令或者 ssh 隧道之类传输大文件.这时候你需要指定特定的特定的网 ...
- 使用Apache服务部署静态网站2019-7-5
使用Apache服务部署静态网站 第1步:把镜像挂载到系统中 第2步:使用vim文件编辑器创建YUM仓库的配置文件 [root@study ~]# vim /etc/yum.repos.d/abc.r ...
- 基于tiny4412的Linux内核移植 --- aliases节点解析【转】
转自:https://www.cnblogs.com/pengdonglin137/p/5252348.html 阅读目录(Content) 作者信息 平台简介 正文 回到顶部(go to top) ...
- Java面试题-基础篇一(干货篇)
1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致. 2.Java有 ...
- Sqlserver 2014 下载
ed2k://|file|cn_sql_server_2014_enterprise_edition_x64_dvd_3932882.iso|2898847744|A33CE10CD989083D1A ...
- luoguP4331 [BOI2004]Sequence 数字序列
题意 大力猜结论. 首先将所有\(a_i\)变为\(a_i-i\),之后求不严格递增的\(b_i\),显然答案不变,最后\(b_i\)加上\(i\)即可. 考虑两种特殊情况: 1.\(a[]\)是递增 ...
- go 通过select实现超时
package main import ( "fmt" "time" ) func main() { ch := make(chan int) quit := ...
- Excel已损坏,无法打开
突然之间,很多EXCEL文件打开时报错:"已损坏,无法打开",这些文件共同点是从邮件中下载而来,这些文件可能面临着安全威协,原来是软件设置了受保护的视图,取消即可.
- usb设备在sysfs中的命名规范
"root-hub的编号"-"设备(或者hub)插入的端口号"[."设备(或者hub)插入的端口号"]:"USB设备配置号&quo ...