位置: 编程技术 - 正文

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

  • 退税收入如何做账
  • 2023小规模纳税人所得税税收优惠政策
  • 划拨土地使用权出租
  • 外资企业内资企业
  • 生产型企业出口退税账务处理
  • 消费税征收范围包括
  • 滴滴电子普通发票怎么抵扣
  • 资金过桥怎么操作
  • 计提工资是计提哪个月的
  • 普票也要盖发票专用章吗
  • 已经认证的发票可以作废吗
  • 市政押金无法收回的损失可以税前扣除吗
  • 劳务公司差额计税收到的代发工资怎么开票
  • 其他综合收益税后净额影响净利润吗
  • 社会组织属于非法人组织吗为什么
  • 认证发票密文有误不能抵扣如何处理?
  • 递延所得税负债是什么意思
  • 小规模纳税人租赁发票税率是多少
  • 福利费可以抵扣个税吗
  • 电商刷单的收入怎么做凭证?
  • 个人承包公司的经营所得怎么算
  • 土地无形资产摊销年限怎么确定
  • 福利费专票进项抵扣转出怎么做账
  • 设计服务交文化建设税吗
  • 购材料有折让如何做会计分录?
  • 公司买厨房用品计入什么科目
  • 怎么设置静音iphone
  • 什么是comsol
  • 电信apn接入点设置+最快
  • linux查看文件的权限
  • php+js
  • window显示我的电脑
  • 公司承担的社保公积金怎么做账
  • 盘点的原则包括
  • 出差午餐补助公职出差
  • php转换成html
  • 关联方利息支出标准比例
  • 年终奖分次发跟一起发有什么区别
  • php加减
  • 软件企业享受增值服务
  • web后端开发是什么意思
  • php字符串型数据的定义方式
  • python photoshop
  • 哪些项目可以在城镇开发边界外
  • 生活办公用品清单
  • 企业福利费超过预算收入
  • 企业报废原材料如何处理
  • 以房租入股公司怎么交税
  • 非货币性职工薪酬
  • 汇算清缴调增都有哪些项目
  • sql server怎么恢复
  • sql server2005怎么打开
  • 付款人和开票人必须相符吗
  • 影响企业营业利润的有哪些
  • 销售货物如何写凭证
  • 增值税普通发票税率
  • 库存现金盘点表模板
  • 施工企业简易计税的依据
  • 以货物抵应收账款的分录
  • 顾客办理会员卡要怎么做账?
  • 公司名义送花篮属于什么费用
  • 租赁费计提部分算入印花税吗
  • 什么叫发票分割单
  • mysql双主复制
  • sql server中千万数量级分页存储过程代码
  • mysql命令导入
  • mac可以上qq但是打不开网页
  • macoshosts文件位置
  • “linux”
  • ubuntu下添加新用户
  • sqlmangr.exe - sqlmangr是什么进程 有什么用
  • win10怎么添加打印机
  • 激活 win7
  • [置顶]星陨计划
  • shell中执行mysql命令
  • 简单谈谈你对中国国防建设的认识
  • 电子税务局怎么添加开票员
  • 北京市国家税务局官网手机app
  • 个体户定额纳税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设