位置: 编程技术 - 正文

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

  • 什么情况下个人资产会被冻结
  • 销售部门使用的管理设备计提的折旧应计入的账户为
  • 销售利税率计算公式及分析
  • 财务状况说明表财务报表有什么区别
  • 已执行新金融准则利润表如何填列
  • 加油卡充值可以退吗
  • 货没出,发票先开
  • 定期定额自行申报表填表说明
  • 车辆购置附加税证丢了能过户吗
  • 企业录用失业人员有税收优惠吗
  • 成本核算会计科目包括
  • 境外单位向境内单位提供咨询
  • 500万以下固定资产最新政策
  • 银行承兑汇票怎么取钱
  • 交通运输服务增值税税率
  • 财政专项资金不征税收入
  • 咨询费的税费
  • 货款打多了退款怎么做账
  • 行政事业单位往来票据使用范围
  • 苹果mac电脑下刻字怎么弄
  • 高新企业研发费用占销售收入的比例
  • 苹果最强机型
  • spss安装后无法启动,并行配置不正确
  • win7为什么现在不能用了
  • Win10 20H1/20H2 KB5001391补丁今日发布(内附下载)
  • 苹果手机屏幕旋转怎么设置关闭
  • php 设计模式 鸟哥
  • 不动产经营租赁包括哪些内容
  • dmc32.dll
  • 企业所得税纳税标准
  • 货物运输业增值税专用发票
  • 自己搭建网站怎么赚钱
  • 投资者追加资本金属于什么
  • vue3.0教程
  • less变量
  • php+jQuery+Ajax简单实现页面异步刷新
  • 专项应付款怎么转固定资产
  • 礼品赠送纳税标准
  • 发票上多盖了一个发票章
  • 报销借款分录怎么做
  • 合伙人退伙后对退伙后的债务承担责任吗
  • 金蝶可以自动结账吗
  • 分公司财务负责人要求
  • 收到联营企业分红怎么做
  • 分公司企业所得税怎么缴纳
  • 红冲上月发票都附什么附件
  • 固定资产计提折旧凭证怎么做
  • 应收票据的核算范围包括
  • 非居民企业股权转让特殊性税务处理
  • 失业保险金的支付方式
  • 开发票货款未公对公转如何做账?
  • 债权人和债务人的区别
  • 收到其他公司往来款怎么做账
  • 汇算清缴主要检查什么
  • 五金配件生意好做吗
  • 签订购货合同,计划下月购入的固定资产
  • 包工包料工程如何计税
  • 买入返售金融资产 流动资产
  • 酒店会计做账流程视频
  • 阿里云 mybase
  • 一条sql语句搞定一个数据
  • 如何在卸载程序中隐藏已安装程序
  • linux如何挂载iso文件
  • dell t110服务器
  • win8.1如何关闭windows defender
  • win10系统怎么设置默认打印机
  • linux 系统文件
  • mysql删除key
  • win10无法启动diagnostic policy service
  • javascript 数组操作
  • Cocos2dx3.2 Crazy Tetris 游戏输入(键盘事件,重力事件,触摸屏事件)
  • shell脚本学习指南
  • 安卓开发viewpager的用法
  • 读取带敏感字符的行的批处理
  • jquery中有几种方法可以来设置和获取样式
  • 国家税务局浙江电子税务局官网入口
  • 怎么在晋江查找观看记录
  • 北京地税残疾人补贴政策
  • 中华人民共和国成立于1949年10月1日到今年是多少周年
  • 什么是审计的重要特征,也是审计的精髓
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设