位置: 编程技术 - 正文

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

  • 资产损失税前扣除及纳税调整明细表
  • 税控盘这个月没有反写会怎么样
  • 车辆购置税计入固定资产入账价值吗
  • 生产设备保险费会计分录
  • 主营业务收入明细表格模板
  • 待处理财产损益年底怎么处理
  • 学校食堂支出
  • 预提工资与计提工资的区别
  • 小规模免增值税的账务处理
  • 跨地区经营企业代码表从哪里找
  • 汽车减税
  • 定额发票不够用可以申请额度要交税吗
  • 企业银行余额
  • 小规模没有进项票可以开销项票吗
  • 出差补贴是否缴纳个人所得税 北京
  • 地下商铺出售产权归属
  • 增值税的税额是什么意思
  • 研发费用没做账怎么调账
  • 船舶维修价格表2017
  • 委托代销商品委托方发出商品的分录
  • 对方给我们开发票
  • 开出销项负数发票怎么做账
  • 公司的车卖了
  • 公司技术服务部是干嘛的
  • 金税盘需要报税吗
  • 长期股权投资是金融性资产吗
  • 汇算清缴工资填哪个数
  • 收到的出口退税款需要并入利润总额吗
  • 不是公司员工差评怎么写
  • 计提税金怎么提
  • php封装composer包
  • php中this的用法
  • 结转损益和结转成本
  • PHP:Memcached::getResultCode()的用法_Memcached类
  • mozilla是什么文件
  • 最保值的ipad
  • php如何上传1个g以上的文件
  • php 文件传输
  • 增值税的征收范围包括销售不动产
  • 培训发票税点
  • 代收代缴水费收不上来怎么办
  • 销售包括是销项税金吗
  • 其他应付款二级明细科目有哪些
  • 冲红的发票税款怎么处理
  • 工程结算编制收费标准
  • 按差额缴纳增值税
  • 旅行社开具的发票
  • 公司从异地迁移到本地怎么向当地政府写申请
  • 建筑工程老项目开票截止日期
  • 营业外收入是否影响营业利润
  • 没收到发票怎么入账
  • 企业注销其他应付款怎么处理账务
  • 生产的半成品怎么做分录
  • 挂靠企业电费如何处理?
  • 一个会计每个月平均有多少钱
  • 现金日记账怎么填写规范
  • 商业资本金
  • mysql的基本介绍
  • xp系统如何进入桌面
  • windows 8.1 build 9600
  • win10周年版
  • linux讲解
  • linux创建目录函数
  • win7睡眠唤醒设置密码
  • 耳朵前皮下有个小软包
  • cocos2dx webview
  • unity4.1
  • BootStrap TreeView使用实例详解
  • ExtJS 2.0 GridPanel基本表格简明教程
  • 如何解决android代码红线
  • 及将上市的手机
  • javascript教程chm
  • 相机调取失败
  • js选中div
  • 江苏差旅费报销管理规定2021
  • 交社保去地税局交吗
  • 国家税务总局河北地税局
  • 国税局内设机构
  • 政府给予补贴
  • 中国十大经济排名
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设