自定义圆形进度条的实现方式

duilib 做的Demo ,支持进度条,以及动态修改xml 的内容 duilib 做的一个demo ,里面包含里进度条的使用,另外还支持动态的修改xml 的内容,即时修改即使显示。 立即下载

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

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

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

//在布局文件里的代码
   <ProgressBar
        android: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" >

    <shape
        android:innerRadiusRatio="3"
        android:shape="ring"
        android:thicknessRatio="8"
        android:useLevel="false" >
        <gradient
            android: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>
        <rotate
            android: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,群共享里有源码。





Visual MODFLOW Flex 6.1新手入门:从数据导入到3D建模的完整工作流解析 本文为Visual MODFLOW Flex 6.1新手提供了从零开始构建地下水数值模型的完整工作流指南。详细解析了从项目规划、数据准备与导入,到构建三维概念模型、生成并运行数值模型,直至结果可视化与校准的核心步骤。帮助水文地质与环工领域初学者快速掌握这一专业软件,高效完成从数据到三维建模的全过程。 阅读详情

相关推荐

Nginx源码安装和基础配置

Nginx简介 nginx: 世界第二大web服务器软件,以高并发、低消耗著称,源自于俄罗斯,创建者 Igor(伊戈尔),2004年开源,最早以代理服务器的身份出现,2015成立nginx公司,2019年以6.7亿被F5 Networks公司收购。 代理服务器: 正向:squid 反向: squid:最古老的代理服务器 LVS: 优点: 1.抗负载能力强、是工作在网络4层之上仅作分发之用 2.配置性比较低,这是一个缺点也是一个优点,简单不易出错 3.工作稳定,抗负载能力很强,有完整的双机热备方案

hjyhjy0的博客 500

duilib 截取视音频播放进度控件

最近做项目 遇到需要截取视音频播放进度的 的问题,参考了RedRain 大佬的duilib 拖拽控件的demo。 自己做个小demo ,以此记录一下。 demo 用到了Progress 控件 Label 控件 Slider 控件和button 控件 XML 如下: <Window size="800,500" caption="0,0,0,40" bktrans="tru...

qq_41947442的博客 391

CAD二次开发(C#版):从零搭建开发环境与核心DLL引用指南

本文详细介绍了使用C#进行CAD二次开发的环境搭建与核心DLL引用指南,涵盖Visual Studio配置、AutoCAD插件项目创建、DLL引用技巧及调试方法。通过实战示例和常见问题排查,帮助开发者快速掌握CAD二次开发的核心技术,提升开发效率。

weixin_28837817的博客 728

duilib 小控件 之 滑动条

1 滚动条 Slider属性 <Slider parent="Progress" notifies="暂时不写" > <Attribute name="thumbnormalimage" default="" type="STRING" comment="拖动滑块普通状态图片"/> <Attribute name="thumbhotimag...

目前打算换一个工作,有招聘windows c++方向的也欢迎联系,北京、济南 最好 2019

FPGA 学习系列(2):Verilog 语法基础

Verilog 由门级建模数据流建模行为建模门级建模(Gate Level Modeling):使用基本逻辑门描述电路,接近硬件物理结构。数据流建模(Data Flow Modeling):使用assign语句进行组合逻辑建模,类似数学方程式。行为建模(Behavioral Modeling):使用always代码块和if-elsecase等控制语句建模,抽象程度较高。Verilog 代码一般由模块(module)组成,每个模块描述一个独立的硬件功能。

Azperk的博客 988

Evolution of Heuristics: Towards Efficient Automatic Algorithm Design Using Large Language Model

启发式算法广泛用于处理复杂的搜索和优化问题。然而,启发式算法的手动设计通常非常耗费人力,需要丰富的工作经验和知识。本文提出了启发式算法的进化 (EoH),这是一种新颖的进化范式,它利用大型语言模型 (LLM) 和进化计算 (EC) 方法进行自动启发式设计 (AHD)。EoH 代表自然语言中的启发式概念,称为思想。然后由 LLM 将它们转换为可执行代码。进化搜索框架中思想和代码的演变使其在生成高性能启发式算法方面非常有效和高效。

weixin_43961909的博客 2163

Qt之QRoundProgressBar(圆形进度条)

简述 QRoundProgressBar类能够实现一个圆形进度条,继承自QWidget,并且有和QProgressBar类似的API接口。 简述 详细说明 风格 颜色 字体 共有函数 共有槽函数 详细说明 主要有以下特性: 圆形进度条控件 高度可定制的 源码下载: Qt Circular Progres...

weixin_33816611的博客 2135

选择的 Python 解释器无效,请尝试更改解释器以启用 IntelliSense、Lint 分析和调试等功能。请查看输出,详细了解解释器无效的原因。

摘要:在VS Code中配置Anaconda Python解释器时若出现"解释器无效"错误,可通过修改用户设置解决。具体步骤:1) 按Ctrl+Shift+P打开命令面板;2) 搜索并打开用户设置JSON文件;3) 添加conda路径配置项,示例格式为"python.condaPath": "D:\\Anaconda\\setup\\Scripts\\conda.exe";4) 同时启用环境激活选项"python.terminal.act

猿小白的博客 844

QT环形进度条(圆形进度条)

在Qt自带的控件中,只有垂直进度条、水平进度条两种。在平时做页面开发时,有些时候会用到环形进度条。环形进度条可以在各种需要显示任务或操作进度的场景中使用,提供可视化的进度反馈,提升用户体验。本示例使用QT实现一个自定义环形进度条。实现这个功能主要两个重点:图形绘制和数值计算。

u012959478的博客 4304

SPME/IP PPT详解

什么是中间件?它是操作系统与应用程序之间的一块代码,它对于应用程序提供了一些标准接口,屏蔽了应用程序与底层的一些交互,上层应用程序只要和中间件进行交互就可以了,这样就可以达到一个解耦的目的。SOMEIP其实是一个中间件,它是操作系统与应用程序之间的一段代码,它是可以运行在TCP/IP之上的,可以在很多平台上使用,可以适配较多的操作系统,可以提供很多接口。经过序列化之后,在网络上传输的是一些101010这样的二进制流。SOME/IP可以承接应用层的一些数据,进行打包放到传输层。

usstmiracle的博客 619

【Unity实战篇】 接入百度翻译,实现文本自动翻译功能

日常在做项目的过程中,游戏本地化几乎已经成为必不可少的一步。 本篇文章将演示怎样在Unity中接入百度翻译,实现文本自动翻译的功能。

努力前行,总会成为自己心中的那道光 9059

三种方式实现自定义圆形页面加载中效果的进度条

<br />一、通过动画实现<br />定义res/anim/loading.xml如下:<br /><?xml version="1.0" encoding="UTF-8"?><br /><animation-list android:oneshot="false"<br />  xmlns:android="http://schemas.android.com/apk/res/android"><br />  <item android:duration="150" android:drawable="

zhou699的专栏 2917

Gazebo手册:【1】gazebo基本操作案例

欢迎来到初学者模块!本模块将引导您了解 Gazebo 的最基本功能。我们将构建一个简单的车辆来演示这些功能。这些教程适用于 Gazebo 新手和/或没有编程或 Linux 经验的人。 每个教程都建立在上一个教程的基础上,因此我们建议您按顺序学习这些教程。 一、何为Gazebo? Gazebo 是一款 3D 动态模拟器,能够准确有效地模拟复杂室内和室外环境中的机器人种群。虽然类似于游戏引擎,但 Gazebo 提供了更高保真度的物理模拟、一套传感器以及用于用户和程序的接口。 1............

gongdiwudu的专栏 2万+

android 自定义圆形进度条样式,Android三种方式实现ProgressBar自定义圆形进度条

进度条样式在项目中经常可以见到,下面小编给大家分享Android三种方式实现ProgressBar自定义圆形进度条。Android进度条有4种风格可以使用。默认值是progressBarStyle。设置成progressBarStyleSmall后,图标变小。设置成progressBarStyleLarge后,图标变大设置成progressBarStyleHorizontal后,变成横向长方形。自...

weixin_33600816的博客 1860

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

android圆形点击效果,Android 三种方式实现自定义圆形页面加载中效果的进度条

【实例简介】Android 三种方式实现自定义圆形页面加载中效果的进度条【实例截图】【核心代码】ad376a86-a9aa-49bc-8cea-321bcff2c0c3└── AnimRoundProcessDialog├── AndroidManifest.xml├── bin│ ├── AnimRoundProcessDialog.apk│ ├── classes.dex│ ├──...

weixin_27155667的博客 271

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【Android进度条】三种方式实现自定义圆形进度条ProgressBar

点击打开链接 总结了3种方法: 1.多张图片切换 2.自定义颜色 3.旋转自定义图片

bangexiyang的博客 638

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

三种方式实现自定义圆形进度条ProgressBar

一、通过动画实现 定义res/anim/loading.xml如下: [html] view plaincopyprint? 二、通过自定义颜色实现 定义res/drawable/p...

zhaweijin的博客 200

Android 三种方式实现自定义圆形页面加载中效果的进度条

Android 三种方式实现自定义圆形页面加载中效果的进度条

qq_43685172的博客 1068
上一篇: Android动画
下一篇: android LayerDrawable 图层的实现
com360
博客等级 码龄16年 225粉丝 137原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值