位置: 编程技术 - 正文

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

  • 管理费用与税金及附加哪个会影响利润
  • 初级职称经济法基础重点
  • 小规模超过10万是全额交税吗
  • 餐饮发票个人抬头怎么写
  • 公司采购报销没发票
  • 职工取暖费计入什么科目
  • 超市送现金券怎么做账
  • 附加税按实际缴纳计提吗
  • 留抵进项税抵欠税后期末未交增值税会减少吗
  • 开完发票业务没收入需要确认收入入账吗?
  • 营改增后如何纳税
  • 个体户国税异常怎么办
  • 实收资本印花税税率
  • 餐听发票可以开专用发票吗?
  • 土地增值税清算是什么意思
  • 资产减值准备的账务处理
  • 核销坏账的会计处理分录
  • 旅行社开具的发票能否作废
  • 金蝶如何结转折旧费用的操作步骤
  • 当月认证的发票当月一定要入账吗
  • 存货跌价准备用账面余额还是账面价值
  • 软件著作权认证查询
  • 工商年报社保需要多少钱
  • 设置ahci模式后,开不了机
  • 赠品如何做兑换码
  • redis在php项目中的使用实例
  • 金针菜的养殖方法和技术
  • win10如何打开regedit
  • 图书装订的工作容易吗
  • php语句和php变量都是区分大小写的
  • uniapp多端兼容
  • 金融机构贷款利息规定
  • 所得税税前扣除的费用有哪些
  • 如何通过手机号码查对方在哪里
  • vue3props用法
  • 银行存款日记账可以采用
  • 出口已使用的设备退税还是免税
  • 马塔饰件怎么样
  • 使用vue开发app
  • 收支比是收入比还是利润
  • 农业企业所得税是免税的吗
  • 怎么理解中国实际
  • 劳务人员劳务费走薪资还是走报销
  • 利用职务之便谋取私利是什么罪
  • 税前利润包含
  • 月初领票是不是要等到报完税才可以领
  • 劳务外包收入如何纳税
  • windows下MySQL 5.7.3.0安装配置图解教程(安装版)
  • 下列项目的进项税额可以从销项税额中抵扣的是()
  • 劳保用品专卖
  • 销售折让的会计分录怎么做
  • 福利费可以计入销售费用吗
  • 所得税不退税怎么写情况说明
  • 套现给现金还是转账好
  • 营改增问题解答
  • 公司注销往来账要消吗
  • 企业会计制度怎么写
  • 开办费如何摊销成本
  • thinkpad如何安装win10
  • 口袋pe下载
  • xbox无法连接无线网络
  • macbook 如何设置safari的搜索引擎
  • jetcar.exe - jetcar是什么进程 有什么作用
  • windows隐藏分区
  • win10系统激活后怎么关闭
  • jquery的实现原理
  • [置顶] 混合、反走样、雾效、多边形偏移
  • python ftps
  • jquery实现图片横向移动
  • linux和windows互ping
  • android之startActivityForResult的使用
  • jquery showdialog
  • jquery中each()方法的作用及使用
  • Android之Broadcast与BroadcastReceiver
  • 西安税务机关
  • 福建省运会2022年
  • 山东省地方税务局关于个人所得税
  • 民族贸易产生的原因
  • 减免税办理
  • 签订设计合同
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设