位置: 编程技术 - 正文

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

  • 向境外企业支付利息代扣代缴
  • 待抵扣进项税的账务处理
  • 农产品收购发票使用范围
  • 物流辅助服务税率
  • 电商账务处理及收入成本如何确定?
  • 汇算清缴哪些需要调增调减
  • 核定征收率怎么算的
  • 长期待摊费用摊销年限规定
  • 房地产常用的付款方式有哪三种
  • 预存1000送100促销活动方案
  • 土地使用权的账面价值计入在建工程
  • 工业企业的三个阶段
  • 银联交易手续费
  • 留底进项税额办理退税需要什么手续
  • 增值税扣税项目
  • 敏感资产额怎么算
  • 核定征收个体户怎么报税
  • 会计科目未付利润属于哪个科目
  • 华为matex3爆料
  • 处理废料会计分录
  • 参保各险种人数统计
  • mac升级系统还剩不到一分钟
  • 销售成本属于成本吗
  • elementui
  • 优胜美地国家公园简介
  • 外贸出口企业增值税怎么结转
  • 小规模企业购入固定资产怎么做账务处理
  • 合作社分红怎么计算
  • vue created mounted
  • 前端权限控制实战
  • thinkphp函数有哪些
  • 增值税及附加交给国税还是地税
  • 合同印花税可以年底报一次
  • 费用化与资本化的区别与影响
  • spring 门面模式
  • 九步功法
  • MySQL中使用什么语句来更新表中的记录
  • sql server 2008使用教程
  • 低值易耗品和物料用品的区别
  • 建筑图纸设计费多少钱
  • 怎么解释税收
  • 银行存款利息计算器在线计算器
  • 限售股上市流通是好还是坏
  • 公司员工支出
  • 已付款未收到发票
  • 怎么计算预缴及附加税额
  • 购买汽车后,需要缴纳的税种有哪些
  • 退回的银行手续费做什么科目
  • 什么是发票抬头怎么填
  • 算账的意思是什么?
  • sql server数据导入导出的特点
  • Windows环境下,在给文件命名时( )
  • 进程是什么 进程类型
  • 微软警告:64位Win7系统或无法安装KB3033929补丁更新
  • wind8系统怎么清除所有东西 恢复出厂
  • 家字取名男孩名字
  • 微软官方解决升级问题
  • windows.prompt用法
  • js入门基础
  • 表单提交servlet
  • Jquery ajax基础教程
  • 常用正则表达式汇总
  • unity游戏开发的技术路线有哪些
  • linux bash脚本
  • 批处理是什么
  • jquery mobile教程
  • shell脚本 ftp
  • javascriptz
  • js asc
  • js中布尔值为false的六种情况
  • js浮动窗口
  • 怎样学好js中的逻辑
  • 增值税9%税率适用范围2023
  • 国税账户密码在哪里能找到
  • 安康市税务局党玲玲
  • 资源税什么意思
  • 国家税务局增值税发票平台
  • 蓬莱市税务局
  • 专用发票章盖在哪里
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设