如何自定义圆形进度条哪,也就是替换一下进度条的图片而已。

先分析一下,系统对进度条如何定义的:

咱们一般情况下载布局文件中这么书写:

//在布局文件里的代码<ProgressBarandroid:id="@+id/progressBar1"style="?android:attr/progressBarStyleSmall"android:layout_width="wrap_content"android:layout_height="wrap_content" />
style="?android:attr/progressBarStyleSmall" 这个引用的是样式
这是在att.xml文件里的内容<declare-styleable><attr name="progressBarStyleSmall" format="reference" /></declare-styleable> 
这是在theme.xml中的内容<style name="Theme"><item name="progressBarStyleSmall">@android:style/Widget.ProgressBar.Small</item><style>

从上面可以看出,进度条的样式放在了系统的主题样式里面的,做为系统样式的一部分。

再看看这个样式文件如何定义的:

//进度条的style//在styles.xml文件中的内容<style name="Widget.ProgressBar.Small"><item name="android:indeterminateDrawable">@android:drawable/progress_small_white</item><item name="android:minWidth">16dip</item><item name="android:maxWidth">16dip</item><item name="android:minHeight">16dip</item><item name="android:maxHeight">16dip</item></style>

看到这里就知道,引用的图片在这里:<item name="android:indeterminateDrawable">@android:drawable/progress_small_white</item>

//引用的drawble //progress_small_white.xml<?xml version="1.0" encoding="utf-8"?>
//放到drawable文件夹下了
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"android:drawable="@drawable/spinner_white_16"android:pivotX="50%"android:pivotY="50%"android:framesCount="12"android:frameDuration="100" />//然后就是这张图片了
spinner_white_16,这种图片没在源码中找到

注意:spinner_white_16不一定就是一张纯的图片,有可能是动画。

从下面的实现方式就能知道spinner_white_16到底是不是图片:在这里明确一下,可以是图片,当然也可以使其他的,请看下面的实现

定义实现:

<ProgressBar android:id="@+id/loading_process_dialog_progressBar"android:layout_width="wrap_content" android:layout_height="wrap_content"android:indeterminate="false" android:indeterminateDrawable="@anim/loading" />

其实就是

android:indeterminateDrawable="@anim/loading"

把这个属性指向的资源改为你想要的就可以。

实现的三种方式:

1.指向动画的实现方式

熊猫阅读就是利用这种方式实现的:

看代码:

在res资源文件夹下的anim文件夹下创建一个动画文件:

内容如下:比如名字命名为loading.xml

<?xml version="1.0" encoding="UTF-8"?>
<animation-list android:oneshot="false"xmlns:android="http://schemas.android.com/apk/res/android"><item android:duration="150" android:drawable="@drawable/loading_01" /><item android:duration="150" android:drawable="@drawable/loading_02" /><item android:duration="150" android:drawable="@drawable/loading_03" /><item android:duration="150" android:drawable="@drawable/loading_04" /><item android:duration="150" android:drawable="@drawable/loading_05" /><item android:duration="150" android:drawable="@drawable/loading_06" /><item android:duration="150" android:drawable="@drawable/loading_07" />
</animation-list> 

每个item分别引用一张图片

引用就是这样

android:indeterminateDrawable="@anim/loading"

2.指向用颜色定义的drawable资源:

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"android:fromDegrees="0"android:pivotX="50%"android:pivotY="50%"android:toDegrees="360" ><shapeandroid:innerRadiusRatio="3"android:shape="ring"android:thicknessRatio="8"android:useLevel="false" ><gradientandroid:centerColor="#FFDC35"android:centerY="0.50"android:endColor="#CE0000"android:startColor="#FFFFFF"android:type="sweep"android:useLevel="false" /></shape></rotate>

引用的时候就是使用drawble了

android:indeterminateDrawable="@drawable/style_xml_color"

当然这样也可以:

<?xml version="1.0" encoding="utf-8"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"android:drawable="@drawable/spinner_16"android:pivotX="50%"android:pivotY="50%"/>

3.引用一个图片

drawable文件:

<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android" ><item><rotateandroid:drawable="@drawable/dialog_progress_round2_res"android:fromDegrees="0.0"android:pivotX="50.0%"android:pivotY="50.0%"android:toDegrees="360.0" /></item></layer-list>

引用一张图片

android:drawable="@drawable/dialog_progress_round2_res"

最后总结一下,其实引用的里面,都有旋转动画,如果只引用一张图片的话,他不会旋转的。有兴趣的朋友自己可以试一下。也可以看看源码如何实现的。有什么建议请留言。

使用drawable和第二种方式一样。

需要源码的同学,加入这个群:200956440,群共享里有源码。

自定义圆形进度条的实现方式相关推荐

  1. android自定义圆形进度条,实现动态画圆效果

    自定义圆形进度条效果图如下:应用场景如动态显示分数等. view的自定义属性如下attr.xml <?xml version="1.0" encoding="UTF ...

  2. Android自定义圆形进度条

    Android自定义圆形进度条 github地址:https://github.com/opq1289/CircleProgressView 效果图: 无动画: 有动画: 整圆: 切割圆: 具体步骤: ...

  3. android绘制环形进度_Android动态自定义圆形进度条

    这篇文章主要介绍了Android动态自定义圆形进度条,需要的朋友可以参考下 效果图: A.绘制圆环,圆弧,文本 //1.画圆环 //原点坐标 float circleX = width / 2; fl ...

  4. 微信小程序进度条样式_详解微信小程序——自定义圆形进度条

    微信小程序 自定义圆形进度条,具体如下: 无图无真相,先上图: 实现思路,先绘制底层的灰色圆圈背景,再绘制上层的蓝色进度条. 代码实现: JS代码: 页面初始化 options为页面跳转所带来的参数 ...

  5. 自定义圆形进度条 自定义倒计时进度条

    自定义圆形进度条 自定义倒计时进度条 版权声明:转载必须注明本文转自严振杰的博客: http://blog.csdn.net/yanzhenjie1003 此控件源码已开源到Github:https: ...

  6. QT自定义圆形进度条

    以下是一个简单的示例,展示如何创建一个自定义的圆形进度条控件. 1.创建一个新的Qt控件类,继承QProgressBar类.在该类的头文件中添加以下代码:     class CircularProg ...

  7. android 环形时间显示_Android_Android实现自定义圆形进度条,今天无意中发现一个圆形进度 - phpStudy...

    Android实现自定义圆形进度条 今天无意中发现一个圆形进度,想想自己实现一个,如下图: 基本思路是这样的: 1.首先绘制一个实心圆 2.绘制一个白色实心的正方形,遮住实心圆 3.在圆的中心动态绘制 ...

  8. 【Android 应用开发】 自定义 圆形进度条 组件

    转载著名出处 : http://blog.csdn.net/shulianghan/article/details/40351487 代码下载 : -- CSDN 下载地址 : http://down ...

  9. Android 自定义View,自定义属性--自定义圆形进度条(整理)

    很多的时候,系统自带的View满足不了我们的功能需求,那么我们就需要自定义View来满足我们的需求 自定义View时要先继承View,添加类的构造方法,重写父类View的一些方法,例如onDraw,为 ...

最新文章

  1. Princess Principal(思维题)
  2. 用Adapter模式重构以前系统的登录权限验证
  3. fastjson 过滤不需要的字段或者只要某些字段
  4. 通才和专家:如何选择
  5. 【解决问题】idea启动本地tomcat访问localhost:8080报404错误
  6. 可以用数学来证明的中文
  7. 阿里云Kubernetes服务上使用Tekton完成应用发布初体验
  8. foxmail怎么加入黑名单 foxmail导入黑名单邮箱地址的教程
  9. python你的人生_人生苦短:运行你的第一个 Python 脚本
  10. 面试中的智力题及编程实践
  11. 结合CRT与欧拉定理高阶幂求余
  12. [Linux] 通过shell给unix socket发送数据
  13. ChIPQC——对ChIP-seq的质量评估
  14. IDM插件chrome无法加载
  15. Win11本地安全策略怎么设置?
  16. 精通 CSS+DIV 网页样式与布局 158
  17. ZOJ-1003-Crashing-Balloon
  18. c语言编程高斯白噪声信号,关于产生高斯白噪声
  19. 玉米迷宫,Meteor Shower S,单词接龙
  20. 2_linux-常用命令-实例

热门文章

  1. oracle无法打开12560
  2. Spring MVC过滤器-超类 GenericFilterBean
  3. @mpx/cli 脚手架源码解析
  4. 【JS】快速入门DOM
  5. 5、CYC-GPS接收机
  6. SQL快速入门、查询(SqlServer)[郝斌SqlServer完整版]
  7. 简单的Winform秒表工具
  8. VS2017MFC发布打包
  9. PC机之间串口通信传输文件
  10. Vi编辑器的常用命令2(文件操作)