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

 
 

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

<?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.xmllayer_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 自定义水平进度条的圆角进度的更多相关文章

  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. LeetCode——Delete Duplicate Emails(巧用mysql临时表)

    Write a SQL query to delete all duplicate email entries in a table named Person, keeping only unique ...

  2. Scala字符穿插值器

    从2.10.0版本开始,Scala提供了三种创新的字符串插值方法: s.f 和 raw 于2.11.0版本开始,用于模式匹配patter match中 小结: s: s"Hello, $na ...

  3. Flask—好的博客

    https://www.cnblogs.com/cwp-bg/p/8892403.html https://www.cnblogs.com/ExMan/p/9825710.html https://w ...

  4. Linux系统配置永久明细路由

    版权声明:本文为博主原创文章,支持原创,转载请附上原文出处链接和本声明. 本文链接地址:https://www.cnblogs.com/wannengachao/p/11947400.html 1.创 ...

  5. 精选傻X错误 && 自己的套路

    声明 参考课件由Accelerator汇编 1. 随手注意的细节 你写的main 真的是 main 么? 在无向图或者网络流找反向边的时候,编号 \(xor 1\) 的前提是,你的第一条边编号是 2或 ...

  6. leetcode 排序问题

    1.堆排序 //大顶堆的构造,传入的i是父节点 void HeapAdjust(int k[],int p,int n) { int i,temp; temp = k[p]; * p; i <= ...

  7. hasattr、getattr、setattr、delattr、反射

    目录 hasattr getattr setattr delattr 反射的应用 __import__(了解) 思考: 在做程序开发中,我们常常会遇到这样的需求:需要执行对象里的某个方法,或需要调用对 ...

  8. Codeforces Round #596 (Div. 2, based on Technocup 2020 Elimination Round 2) B. TV Subscriptions 尺取法

    B2. TV Subscriptions (Hard Version) The only difference between easy and hard versions is constraint ...

  9. BDFramework.Core 学习

    x哥(懂的都懂)的框架, 拿点代码过来做注释. 想了解详情可以去他的github https://github.com/yimengfan/BDFramework.Core # Object file ...

  10. D3D9.0管线图

    详见:pipeline-9.0.png