位置: 编程技术 - 正文

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可以启动哪些组件)

  • 个人接私活需要开票,可以让别的公司帮忙开票吗?
  • 个人所得税是什么费用
  • 资产计提折旧的科目
  • 增值税现代服务业6大行业
  • 查询不到已经上市的股票
  • 制造费用多结转了下月如何调整
  • 加工企业怎么记账
  • 水利建设基金一定要交吗
  • 兼职工资直接入公司账户
  • 个人车卖给公司能抵税吗
  • 文化事业建设费减免政策
  • 预付材料购货款计入什么科目
  • 停用的厂房折旧吗
  • 营改增后建筑业
  • 固定资产减少会怎么样
  • 废物处置费如何做分录?
  • 新会计准则短期租赁会计分录
  • 资产管理人该如何称呼
  • 固定资产抵扣的税率
  • 施工单位临时设施的搭建费属于
  • 查账征收改为核定征收需要什么资料
  • 临时工工资单怎么做
  • 房地产增值税结转收入的条件是什么
  • 电脑开始菜单在右边怎么调回来
  • 员工没有工资卡可以转到一个人的账户上发工资不
  • 关于汇算清缴的问题
  • linux 文件夹压缩
  • 政府补助资金能否作为资本金
  • 企业并购的基本方法有
  • php实用的案例
  • php入门课程
  • 收到员工罚款分录
  • Javan tree frogs sitting together on a stalk in Indonesia (© SnapRapid/Offset by Shutterstock)
  • 上市公司分红派股
  • 缴纳住房公积金现金流量项目填什么
  • 细说php
  • 发行通告
  • 21年前端面试题
  • node最新版本
  • java web开发实例大全
  • 跟踪数据包命令
  • elasticsearch基本概念
  • python爬虫中数据接口的含义
  • 支付职工差旅费发生的现金流出
  • 商业积分消费模式
  • 免增值税项目可以抵扣吗
  • 固定资产清理怎么报税呢
  • mongodb主键
  • 开业请别人吃饭怎么说
  • 一般开发票都需要什么开票信息包括了什么?
  • 工程用车折旧年限
  • mysql开启事务语句
  • 企业给员工报销的个人消费支出如何计税
  • 超过认证期专用发票怎么办
  • 员工购买口罩会计科目
  • 应付账款调整科目余额分录
  • 存货过期处理怎么做分录
  • 实时缴税计入什么科目
  • 人工费没有发票怎么办
  • centos 安装
  • xp系统下载SCSI硬盘的安装、启动、设置教程
  • ubuntu顶部菜单栏
  • 万能重装系统
  • win732位系统怎么装
  • xp 更新
  • sistray.exe - sistray是什么进程 有什么用
  • 电脑win8.1系统怎么样
  • 如何用u盘安装win8操作系统
  • linux防病毒措施
  • linux的虚拟终端有几个
  • linux中使用less命令分屏查看
  • [置顶] clauvio,Twitter小老鼠
  • 多态和封装的区别
  • dos命令中删除文件命令有哪些
  • python time模块日期运算
  • jquery事件委托原理
  • 一般纳税人企业所得税怎么算
  • 异地预缴增值税销售额是含税
  • 社保并入税务局的时间
  • 全款房契税退税需要什么资料
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设