Android开发一款好看的加载控件

Ubuntu22.04下ROS2与PX4仿真环境搭建全流程解析 本文详细解析了在Ubuntu22.04系统下搭建ROS2与PX4仿真环境的全流程,包括系统准备、ROS2 Humble安装、PX4飞控环境部署、ROS2与PX4通信桥梁搭建等关键步骤。针对常见问题提供了解决方案,并分享了性能优化和开发调试技巧,帮助开发者快速构建无人机仿真开发环境。 阅读详情

最近抽了点时间学习了Android自定义view,然后花了大概几天时间搞了个自己的一个款开源。让我们先来看看效果:

本开源主要实现了一款精美、优雅的加载控件。她目前有两种类型:弧形加载(CircleProgressView)和水平加载(HorizontalProgressView),同时,你可以为她设置颜色渐变效果。

传送门地址:https://github.com/Moosphan/Material-ProgressView

欢迎大家献上宝贵的star和issue,我将继续努力完善它,也欢迎大家和我一起来优化它的功能,刚学习自定义view,有很多处理不当的地方希望指出来,谢谢��,后续将提升它的定制性和动画等效果。

再来看看细节的效果图:

下面我们来看看该如何使用这款控件。

快速开始

  • Gradle:

    build.gradle:

    compile 'com.moos:Material-ProgressView:1.0.2'

    ​

  • Maven:

    <dependency>
    <groupId>com.moos</groupId>
    <artifactId>Material-ProgressView</artifactId>
    <version>1.0.2</version>
    <type>pom</type>
    </dependency>
  • 通过xml文件来设置:

    <com.moos.library.CircleProgressView
          android:id="@+id/progressView_circle"
          android:layout_width="240dp"
          android:layout_height="240dp"
          android:layout_marginTop="12dp"
          app:start_progress="0"
          app:end_progress="60"
          app:start_color="@color/purple_end"
          app:end_color="@color/purple_start"
          app:circleBroken="true"
          app:isTracked="true"
          app:track_width="26dp"/>
    
    <com.moos.library.HorizontalProgressView
        android:id="@+id/progressView_horizontal"
        android:layout_width="320dp"
        android:layout_height="100dp"
        android:layout_marginBottom="40dp"
        android:layout_marginTop="36dp"
        app:start_color="@color/red_start"
        app:end_color="@color/red_end"
        app:track_width="12dp"
        app:end_progress="60"
        app:progressTextColor="#696969"
        app:corner_radius="12dp"
        app:isTracked="true"
        app:trackColor="#f4f4f4"/>

    ​

  • 通过java代码动态初始化属性:

    
          //CircleProgressView
          CircleProgressView circleProgressView = (CircleProgressView) view.findViewById(R.id.progressView_circle);
          circleProgressView.setStartProgress(0);
          circleProgressView.setEndProgress(80);
          circleProgressView.setStartColor(Color.parseColor("#FF8F5D"));
          circleProgressView.setEndColor(Color.parseColor("#F54EA2"));
          circleProgressView.setCircleBroken(true);
          circleProgressView.setTrackWidth(20);
          circleProgressView.setProgressDuration(2000);
          circleProgressView.setTrackEnabled(true);
          circleProgressView.setFillEnabled(false);
          circleProgressView.startProgressAnimation();
    
          //HorizontalProgressView
          HorizontalProgressView circleProgressView = (HorizontalProgressView)              view.findViewById(R.id.progressView_horizontal);
          horizontalProgressView.setStartProgress(0);
          horizontalProgressView.setEndProgress(80);
          horizontalProgressView.setStartColor(Color.parseColor("#FF8F5D"));
          horizontalProgressView.setEndColor(Color.parseColor("#F54EA2"));
          horizontalProgressView.setTrackWidth(30);
          horizontalProgressView.setProgressDuration(2000);
          horizontalProgressView.setTrackEnabled(true);
          horizontalProgressView.setProgressCornerRadius(20);
          horizontalProgressView.setProgressTextPaddingBottom(12);
          horizontalProgressView.startProgressAnimation();
    
  • 此外,如果你想要让水平加载控件上方的百分比数值跟随其运动,可以这样设置:

    1. 通过xml设置:
          app:textMovedEnable="true"
    1. 通过java代码:
            horizontalProgressView.setProgressTextMoved(true);

    然后你会看到如下效果:

    ​

相关文档

  • 控件属性

    1. 共有属性:
AttributeDescription
start_progress起始进度
end_progress终止进度
start_color渐变效果的起始颜色
end_color渐变效果的终止颜色
isTracked是否显示轨迹背景
track_width进度条的宽度(边界宽度)
trackColor轨迹背景的颜色
progressTextVisibility是否显示进度值文本
progressTextColor进度值的颜色
progressTextSize进度值的文本字体大小
progressDuration动画时长
animateType动画类型(可以参考属性动画的TimeInterpolator)

2. CircleProgressView的特有属性:

AttributeDescription
isFilled是否内部填充
circleBroken是选择圆形还是弧形进度条

3. HorizontalProgressView的特有属性:

AttributeDescription
corner_radius圆角半径
text_padding_bottom文字距离view的padding
textMovedEnable设置进度值是否跟随控件动画移动
  • 回调

      /**
       * 你可以利用该回调来定制自己的progress值的UI展示
       */
    
      circleProgressView.setProgressViewUpdateListener(new CircleProgressView.CircleProgressUpdateListener() {
    
      @Override
      public void onCircleProgressStart(View view) {
    
      }
    
      @Override
      public void onCircleProgressUpdate(View view,float progress) {
    
          int progressInt = (int) progress;
          textView.setText(String.valueOf(progress)+"%");
      }
    
      @Override
      public void onCircleProgressFinished(View view) {
    
      }
    });
    
    horizontalProgressView.setProgressViewUpdateListener(new HorizontalProgressView.HorizontalProgressUpdateListener() {
    
      @Override
      public void onHorizontalProgressStart(View view) {
    
      }
    
      @Override
      public void onHorizontalProgressUpdate(View view,float progress) {
    
          int progressInt = (int) progress;
          textView.setText(String.valueOf(progress)+"%");
      }
    
      @Override
      public void onHorizontalProgressFinished(View view) {
    
      }
    });
  • Methods

    //共有的方法
    void setAnimateType(@AnimateType int type);
    void setStartProgress(float startProgress);
    void setEndProgress(float endProgress);
    void setStartColor(@ColorInt int startColor);
    void setEndColor(@ColorInt int endColor);
    void setTrackWidth(int width);
    void setProgressTextSize(int size);
    void setProgressTextColor(@ColorInt int textColor);
    void setProgressDuration(int duration);
    void setTrackEnabled(boolean trackAble);
    void setTrackColor(@ColorInt int color);
    void setProgressTextVisibility(boolean visibility);
    void startProgressAnimation();
    void stopProgressAnimation();
    
    //CircleProgressView的特有方法
    void setCircleBroken(boolean isBroken);
    void setFillEnabled(boolean fillEnabled);
    
    //HorizontalProgressView的特有方法
    void setProgressCornerRadius(int radius);
    void setProgressTextPaddingBottom(int offset);
    

demo下载地址

ProgressView-sample.apk

更新记录

  • V1.0.1:为加载控件提供进度回调
  • V1.0.2:为水平进度条提供进度值的跟随动画

特别感谢

HenCoder

VisualCC

关于我

欢迎大家提出改进建议。

Blog:http://moos.club/

E-mail:moosphon@gmail.com

QQ群:601924443

微信终于支持“多设备同时在线”?我用 NAS + Docker 搭了一个云端微信系统,多端共享24小时在线 通过Docker 容器,将微信运行在云端并通过浏览器访问,实现多设备共享同一微信会话 📱。本文详细介绍完整部署流程、docker-compose 配置及资源控制方案,让微信变成“可访问的云桌面应用” ✨ 阅读详情

相关推荐

别再乱改基础库了!手把手教你搞定uni-app小程序上传图片报错(chooseAndUploadFile权限篇)

本文详细解析了uni-app开发微信小程序时遇到的`chooseAndUploadFile`权限报错问题,并提供了四步解决方案。从隐私协议与API权限的关联入手,指导开发者正确配置后台声明、双重提交策略和版本管理,避免降级基础库等常见误区,确保小程序合规运行。

weixin_33709364的博客 276

百款最流行Android个性化控件

本文主要介绍那些不错的个性化View。 目录如下:" class="reference-link " style="">目录如下: •ListView" class="reference-link " style="">•ListView •Menu" class="reference-link " style="">•Menu •ViewPager" class="reference

fjxmyzy0921的博客 1980

西门子S7-1200与汇川SV660F伺服Profinet通讯调试实战

在工业自动化领域,Profinet作为工业以太网标准协议,凭借其高实时性和灵活组网能力,已成为伺服驱动器与PLC通讯的主流选择。其核心原理是通过设备名识别、IP分配以及标准报文(如111速度报文、105定位报文)传输控制字与状态字,实现驱动器的精准控制。相比传统脉冲或CANOpen方案,Profinet直连省去了协议转换网关,降低了成本与故障点,尤其适用于绕线设备、包装机械等中小型单轴或多轴运动控制系统。本文以西门子S7-1200 PLC搭配汇川SV660F伺服为例,完整梳理了从GSDMD组态、InoDri

weixin_29184371的博客 228

Android开源项目第一篇——个性化控件(View)篇

 本文为那些不错的Android开源项目第一篇——个性化控件(View)篇,**主要介绍Android上那些不错个性化的View,包括ListView、ActionBar、Menu、ViewPager、Gallery、GridView、ImageView、ProgressBar及其他如Dialog、Toast、EditText、TableView、Activity Animati

天空哥的专栏 1352

Crush 终端 LLM 工具安装与使用指南:把 AI 编程助手装进你的命令行

喜欢命令行的开发者需要离线/轻量级 AI 助手的场景希望自定义模型与工具链的高级用户通过LSP + MCP + 多模型支持,Crush 不仅能写代码,还能理解项目、调用工具、连接服务,真正成为你的“终端编程搭档”。

weixin_44058951的博客 1616

工业相机图像格式深度解析:从Mono8到Mono12的选型与应用

本文深度解析工业相机黑白图像格式,重点对比Mono8、Mono10与Mono12的核心差异。文章从位深、动态范围和数据量等关键概念切入,详细阐述了不同格式的优缺点及适用场景,为工业视觉项目中的相机选型提供实战指南,帮助用户在精度、速度与成本间做出最优决策。

weixin_29207439的博客 262

Android酷炫实用的开源框架(UI框架)

Android酷炫实用的开源框架(UI框架)前言忙碌的工作终于可以停息一段时间了,最近突然有一个想法,就是自己写一个app,所以找了一些合适开源控件,这样更加省时,再此分享给大家,希望能对大家有帮助,此博文介绍的都是UI上面的框架,接下来会有其他的开源框架(如:HTTP框架、DB框架)。1.Side-Menu.Android 分类侧滑菜单,Yalantis 出品。 项目地址:https://gith

fancychendong的专栏 27万+

【大模型+知识图谱】哈工大版chinese-roberta-wwm-ext模型介绍、下载部署和GPU显卡配置

RoBERTa模型的一个重要改进版本,由阿里云的研究团队提出。而Chinese RoBERTa-wwm-ext则是针对中文文本的预训练模型,它在哈工大的研究团队手中进一步优化,特别适用于中文自然语言处理任务。

知识靠谱的博客 2773

安卓自定义好看的下拉菜单控件

UI设计图 箭头有动画。 思路 自定义一个类继承RelativeLayout,用相对布局的好处就是,文本可以显示在正中间,箭头图标不会占走位置,使文本位置偏移。 该控件可以自定义属性atts。 控件能够通用,不care数据类型 菜单项使用Listview,用PopupWindow弹出 代码实现 1 atts.xml <!-- 自定义dropDownMenu --> <declare-styleable name="Drop...

坐等夕阳落time的博客 2059

45、概率与模糊性:粗糙事件与模糊事件概率的探索

本文探讨了概率理论与模糊性理论在处理现实世界不确定性中的应用,重点分析了模糊事件和粗糙事件的概率定义、性质及其条件概率。同时,介绍了近似贝叶斯网络分类器在信息系统中的应用,以及如何通过概率决策约简提高分类效率。这些方法为处理不确定信息提供了灵活的工具,并在决策和数据分析中具有重要价值。

ik67890123的博客 135

【100%通过率】华为od机试C卷【特殊的加密算法】Python 实现

有一种特殊的加密算法,明文为一段数字串,经过密码本查找转换,生成另一段密文数字串。规则如下1.明文为一段数字串由0-9组成2.密码本为数字0-9组成的二维数组3.需要按明文串的数字顺序在密码本里找到同样的数字串,密码本里的数字串是由相邻的单元格数字组成,上下和左右是相邻的,注意:对角线不相邻,同一个单元格的数字不能重复使用。

MISAYAONE的博客 5924

Android最简单的自定义控件示例

其中第四种是最简单也是最常用的方式,通过继承LinearLayout等已有的ViewGroup,里面再放一些Buttong、TextView等其他已有的控件或ViewGroup,把他们组装起来就形成了一个新的自定义控件,再通过自定义的属性就可以对控件的一些属性进行赋值,达到复用的效果。代码很简单,功能也很简单,就是一个标题栏,可以通过app:title_name自定义属性设置标题,虽然简单,但是写法很通用。虽然说很简单,但是每次写要重新百度下怎么写,这里写一个自定义的标题栏当做备忘,也分享给大家。

野猿新一 1004

40、基于指令的GPU编程:OpenACC与OpenMP的深入解析

本文深入解析了两种基于指令的GPU编程模型——OpenACC和OpenMP。从编程复杂度、数据处理方式和性能表现等多个方面对两者进行了对比分析,并结合实际应用场景提供了选择建议。通过详细的代码示例和性能测试结果,帮助开发者更好地理解和应用这两种编程模型,以充分发挥GPU的并行计算能力。

q5r6s7的博客 134

Android开源:想送你一款小清新的加载等待 控件

一款 可爱 、清新 & 小资风格的Android自定义View控件已在Github,欢迎Star!

2401_84132589的博客 1074

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

android加载大插件下载地址,Android开发一款优美的加载控件

最近抽了点时间学习了Android自定义view,然后花了大概几天时间搞了个自己的一个款开源。让我们先来看看效果:总体效果本开源主要实现了一款精美、优雅的加载控件。她目前有两种类型:弧形加载(CircleProgressView)和水平加载(HorizontalProgressView),同时,你可以为她设置颜色渐变效果。欢迎大家献上宝贵的star和issue,我将继续努力完善它,也欢迎大家和我一...

weixin_29701553的博客 194

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

一款Android WebView进度条显示控件,使其加载进度平滑过渡。

WebProgress 一款Android WebView进度条显示控件,使其加载进度平滑过渡。 GitHub地址:WebProgress Gif Preview gif可能有点卡,可下载使用此控件的WebView项目查看:网页浏览器 Use 建议直接将类拷贝到项目中:WebProgress xml文件引入: <me.jingbin.library.WebProgress ...

jingbin_的博客 1765

Android自定义View开源:一款小众、优雅的加载等待控件

前言 Android开发中,加载等待的需求 非常常见 本文将带来 一款 可爱 & 小资风格的加载等待Android自定义View控件的使用,希望你们会喜欢。 已在Github开源:Kawaii_LoadingView,欢迎 Star ! 目录1. 简介一款 可爱 、清新 & 小资风格的 Android自定义View控件 已在Github开源:Kawaii_LoadingView,欢迎 Sta

Carson带你学Android 1万+

Android开源:想送你一款小清新的加载等待 控件,作为Android开发程序员

一款 可爱 、清新 & 小资风格的Android自定义View控件已在Github,欢迎Star!在技术领域内,没有任何一门课程可以让你学完后一劳永逸,再好的课程也只能是“师傅领进门,修行靠个人”。“学无止境”这句话,在任何技术领域,都不只是良好的习惯,更是程序员和工程师们不被时代淘汰、获得更好机会和发展的必要前提。如果你觉得自己学习效率低,缺乏正确的指导,可以一起学习交流!加入我们吧!

2401_84149213的博客 1069

android 加载中自定义控件,Android 自定义一款炫酷的加载控件

概述:在设计应用的时候,我们应该热爱极简主义,简单就是好的,对于很多用户来说,复杂的东西并不受欢迎。我要实现的是根据不同的情况去显示不同的加载效果,随用随调,效果是借鉴于某一项目的效果,我认为有必要提取出来改善封装一下,供以后使用。情况大致分为:加载中、无网络、无数据、加载失败等;预览下效果图这里写图片描述我们怎么实现这种效果呢view_loading.xml的布局如下:android:layou...

weixin_29234509的博客 224

android 加载等待控件,Android开源控件:一款你不可错过的可爱 & 小资风格的加载等待自定义View...

前言Android开发中,加载等待的需求 非常常见本文将带来 一款 可爱 & 小资风格的加载等待Android自定义View控件的使用,希望你们会喜欢。示意图已在Github开源:Kawaii_LoadingView,欢迎 Star !目录示意图1. 简介一款 可爱 、清新 & 小资风格的 Android自定义View控件已在Github开源:Kawaii_LoadingView...

weixin_39771614的博客 240

Android 常用开发框架

Android 常用开发框架

我的专栏 1万+

ACProgressLite:轻量级的Android加载控件库

ACProgressLite:轻量级的Android加载控件库 在Android开发中寻找一个既简约又高度可定制的加载对话框?ACProgressLite正是你的不二之选。这款由Cloudist开发的开源库,旨在提供类似iOS MBProgressHUD的体验,使得开发者能够高效实现具有吸引力的加载界面。 项目介绍 ACProgressLite是一款专注于Android平台的加载指示器库。它以轻量...

gitblog_00067的博客 750

如何快速写一款小而美的“上滑无限加载的控件”?| 博文精选

作者 |ShuSheng007责编 | 郭芮出品 | 优快云博客在日常从事Android开发工作时,经常会遇到下拉刷新列表页面,上拉自动加载列表的需求, GitHub上已经有很多关于...

优快云资讯 2294

安卓开发 下拉加载更多的逻辑_Android 开发技术周报 Issue#270

新闻Play Store应用更新:换主题不需要再到系统设置了新证据表明谷歌Fuchsia系统已进入“狗粮”阶段 即将邀请用户测试谷歌I/O 2020 开发者大会如期举行 MWC、F8开发者大会相继取消谷歌Pixel 4a定于4月量产:越南制造、5月I/O大会期间发布Android-x86 9.0-r1 发布 PC上的安卓系统豌豆荚PC版关闭 我的搞机时代也结束了Fuchsia 编程语言策...

weixin_39757122的博客 176

如何快速写一款小而美的《上滑无限加载的控件》

前言 在日常从事Android开发工作时,经常会遇到下拉刷新列表页面,上拉自动加载列表的需求, GitHub上有很多关于这方面的功能极其强大的类库了,那我们为什么还要自己写一个呢? 因为那些类库实在是太重了!很多时候我们只使用其5%功能,但却不得不忍受剩下95%“无用”功能和复杂性。 无限加载RecyclerView 一般情况下,我们使用Android原生提供的那些控件稍作组合或修改即可完成绝大部...

ShuSheng007的程序人生 505
上一篇: HTML实现圆形头像效果
下一篇: Activity生命周期探索
水月沐风
博客等级 码龄10年 186粉丝 95原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值