位置: 编程技术 - 正文

android自定义之 5.0 风格progressBar(android 自定义drawable)

编辑:rootadmin
最近做项目,用到了ProgressBar ,就想到了要使用Android5.0 的效果,就随手实现了一下。效果图:大概的思路:1. 圆圈通过Canvas去绘制2.圆圈的动画通过Animator去控制代码:1.绘制圆的代码是很简单的,@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);canvas.drawArc(arcRectf, startAngle &#; incrementAngele , sweepAngle, false, arcPaint) ; if (animatorSet == null || !animatorSet.isRunning()) {startAnimation() ;}}通过canvas.draw Arc 去绘制 startAngle则是绘制开始的角度 通过加上 incrementAngle这一个变量是为了更好去做动画控制。2.动画控制代码: (这个才是最重要的代码)private void startAnimation(){if (animatorSet != null && animatorSet.isRunning()) {animatorSet.cancel() ; // 取消动画 }animatorSet = new AnimatorSet() ; //设置一个动画集合AnimatorSet set = circuAnimator(); // 创建运行一圈动画的AnimatorSetanimatorSet.play(set) ; animatorSet.addListener(new AnimatorListener() {private boolean isCancel = false ; @Overridepublic void onAnimationStart(Animator animation) {}@Overridepublic void onAnimationRepeat(Animator animation) {}@Overridepublic void onAnimationEnd(Animator animation) {if (!isCancel) {startAnimation() ; // 不停的去循环动画}}@Overridepublic void onAnimationCancel(Animator animation) {isCancel = true ;}}) ;animatorSet.start() ;}//默认的动画时间private int DEFULT_DURATION = ;/** * 循环的动画 */private AnimatorSet circuAnimator(){//从小圈到大圈ValueAnimator holdAnimator1 = ValueAnimator.ofFloat(incrementAngele &#; DEFULT_MIN_ANGLE , incrementAngele &#; f) ; holdAnimator1.addUpdateListener(new AnimatorUpdateListener() {@Overridepublic void onAnimationUpdate(ValueAnimator animation) {incrementAngele = (float) animation.getAnimatedValue() ;}}) ; holdAnimator1.setDuration(DEFULT_DURATION ) ; holdAnimator1.setInterpolator(new LinearInterpolator()) ;ValueAnimator expandAnimator = ValueAnimator.ofFloat(DEFULT_MIN_ANGLE , DEFULT_MAX_ANGLE) ;expandAnimator.addUpdateListener(new AnimatorUpdateListener() {@Overridepublic void onAnimationUpdate(ValueAnimator animation) {sweepAngle = (float) animation.getAnimatedValue() ;incrementAngele -= sweepAngle ;invalidate() ; }}) ;expandAnimator.setDuration(DEFULT_DURATION) ;expandAnimator.setInterpolator(new DecelerateInterpolator(2)) ;//从大圈到小圈ValueAnimator holdAnimator = ValueAnimator.ofFloat(startAngle , startAngle &#; f) ;holdAnimator.addUpdateListener(new AnimatorUpdateListener() {@Overridepublic void onAnimationUpdate(ValueAnimator animation) {startAngle = (float) animation.getAnimatedValue() ;}});holdAnimator.setDuration(DEFULT_DURATION ) ; holdAnimator.setInterpolator(new LinearInterpolator()) ;ValueAnimator narrowAnimator = ValueAnimator.ofFloat(DEFULT_MAX_ANGLE , DEFULT_MIN_ANGLE) ;narrowAnimator.addUpdateListener(new AnimatorUpdateListener() {@Overridepublic void onAnimationUpdate(ValueAnimator animation) {sweepAngle = (float) animation.getAnimatedValue() ;invalidate() ; }}) ;narrowAnimator.setDuration(DEFULT_DURATION) ;narrowAnimator.setInterpolator(new DecelerateInterpolator(2)) ;AnimatorSet set = new AnimatorSet() ;set.play(holdAnimator1 ).with(expandAnimator) ;set.play(holdAnimator).with(narrowAnimator).after(holdAnimator1);return set ; }OK。这个实现思路主要就是Animator的动画运用,很简单的方式,可以随手练习一个Animator的使用。没有什么难点。网盘源码下载地址:

推荐整理分享android自定义之 5.0 风格progressBar(android 自定义drawable),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:android自定义ui,android自定义控件入门与实战,android自定义控件步骤,android自定义属性详解,android自定义属性详解,android 自定义drawable,android 自定义dialog,android 自定义view三个方法,内容如对您有帮助,希望把文章链接给更多的朋友!

github地址:

android自定义之 5.0 风格progressBar(android 自定义drawable)

博客园地址:

版权声明:本文为博主原创文章,未经博主允许不得转载。

Intent启动系统组件(activity,service,BroadReceiver)-android学习之旅(四十九) android提供了统一的编程模型Intent来启动系统的组件,这样提供了松耦合性,是一种mvc的编程模式版权声明:本文为博主原创文章,未经博主允许不得转

Android学习【Android内核编译流程和错误笔记】 博客:

Android自定义之流式布局 流式布局,好处就是父类布局可以自动的判断子孩子是不是需要换行,什么时候需要换行,可以做到网页版的标签的效果。今天就是简单的做了自定义

标签: android 自定义drawable

本文链接地址:https://www.jiuchutong.com/biancheng/371004.html 转载请保留说明!

上一篇:随着ScrollView的滑动,渐渐的执行动画View(scrollview怎么用)

下一篇:Intent启动系统组件(activity,service,BroadReceiver)-android学习之旅(四十九)(通过intent可以启动哪些组件)

  • 减资需要的资料
  • 销售人员的工资属于什么会计科目
  • 办税员如何绑定企业
  • 购进货物建不动产进项税额抵扣
  • 保费 车船税
  • 收银系统已入库怎么操作
  • 收发差错率
  • 初始数据试算表不平衡的原因
  • 加油的时候可以开发票吗
  • 借调员工的工资怎么入账
  • 个税怎么计算扣多少
  • 支付运费价税合计
  • 2020年安装费的增值税税率是多少
  • 装修费税率是多少2021
  • 关于土地增值税若干问题的通知
  • 公司以银行存款名义为员工垫付医疗费分录怎么写
  • 银行不肯给电子承兑贴现怎么回事
  • 增值税的计征方法有哪些
  • 销售后换回产品的账务处理怎么做?
  • 上年度职工工资总额
  • 台式电脑机箱怎么选
  • 劳务公司找的临时工工伤怎么赔
  • php字符串定义
  • php 智能家居
  • 审核凭证的操作步骤
  • rsa前端解密
  • 供应商自身的品质问题
  • thinkphp技术
  • 销项税和进项税抵扣的会计分录
  • 专家顾问作用
  • 在树洞中休息的英语
  • linux 运行php
  • 以前年度损益在报表哪里体现
  • php如何实现自动加载
  • 【深度学习】AI一键换天
  • java聚合工程
  • 工程检测业务
  • 用友软件年度结转操作步骤
  • 三栏式明细账需要每笔结余额吗
  • 管理费用明细账余额累加吗
  • 织梦停止更新了吗
  • php cms
  • 在sqlserver2008中
  • 织梦如何使用
  • 财务费用有发票吗
  • 现金日记账退回的现金怎么填写
  • 银行托管账户的规定有哪些
  • 财务报表申报错误情况说明范文
  • 预提费用在资产负债表中如何列示
  • 什么单位需要
  • 企业预缴增值税附加税率
  • 土地使用税的账务处理分录
  • 已认证的增值税专用发票退票
  • 以前年度损益调整是什么意思
  • 库存商品暂估入库可以结转成本吗
  • 厂房装修费用账务处理
  • 药店医保收入如何查询
  • 差旅费算人工费吗
  • 进口形式发票能证明商品是进口的吗
  • 收到分公司负责人的礼物
  • sql server in()
  • sql server临时表创建语句
  • fedora怎么安装软件
  • explorer.exe进程在哪
  • 求windows7用户账户
  • linux环境什么意思
  • win8c盘
  • win101607怎么升级1903
  • qq2440启动linux后插入u盘出现usb 1-1: device descriptor read/64, error -110,usb 1
  • win10怎么变回系统默认字体
  • win10怎么转移文件到其他盘
  • linux中rwx
  • 激素六项雌二醇30
  • win7创建一个标准用户账户
  • win10系统打开任务管理器的快捷键
  • linuxparted命令
  • vue组件精讲
  • php curl获取cookie
  • 天然气入户安装收费标准2023
  • 安阳市灵活就业人员社保补贴
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设