位置: 编程技术 - 正文

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
  • 挂车和牵引车如何选
  • 税法里面的损耗是什么
  • 住宿费收据属于什么凭证
  • 个人保险发票能抵扣个税
  • 退税发票误勾选确认
  • 委托加工物资两种情况例题
  • 什么发票可以冲销
  • 商品明细分类账怎么做
  • 公司委托收款该怎么办
  • 成品油购进数据未同步怎么办
  • 中国公司外派美国工作
  • 公司租的员工宿舍退租,现在要开发票给人家退房租
  • 公司转账给公司会计分录
  • 未交增值税借方表示什么
  • 减免所得税额明细怎么填
  • 企业发给职工的全年一次性奖金不缴纳个人所得税对吗
  • 进项税留抵需要转出吗
  • 固定资产报废后怎么处理
  • 同期对比和同比增长
  • 税务局减免的税金会计分录
  • 企业滞纳金属于什么税
  • 消耗性生物资产是指什么
  • 苹果手机发票要验证码吗
  • 长期股权投资溢价购入
  • 如何预防计算机病毒的方法
  • 对外投资收益要交税吗
  • 公司开业前启动大会
  • jQuery+Ajax+PHP“喜欢”评级功能实现代码
  • 苹果14pro真实图片发朋圈
  • win10兼容性在哪里调整
  • linux attached
  • 公司缴纳的契税怎么查询
  • 怎样会被税
  • windows7安装nodejs14
  • 前端uniapp写表格
  • php锁定文本
  • 小程序unload
  • point network
  • mysql分区实现
  • 基于python的论文项目有哪些
  • 集合框架有何好处
  • 直线折旧法账务处理例题
  • mongodb cond
  • 免税收入和不征税收入有何区别
  • 处置长期股权投资其他综合收益结转
  • 合并报表存货的计税基础
  • 计提费用收到发票怎么做
  • 全资子公司的利润怎么记录母公司报表
  • 固定资产3%减按2%征收增值税申报表如何填写
  • 收到项目资本金怎么入账
  • 保险赔偿收入如何减税额
  • 利润表季度申报本月金额却怎么填
  • 流动资产周转天数下降说明什么
  • 审核记账凭证的心得
  • 个人购汇需要申报吗
  • 个体户需要报税吗?需要报哪些税?
  • 过滤重复字符串
  • mysql导出查询结果sql
  • rpm方式安装
  • 电脑ahci模式什么意思
  • macos sierra版本10.12.6升级
  • linux/tmp
  • 微软招聘流程
  • Linux常用命令的实验总结
  • SchSvr.exe - SchSvr是什么进程 有什么作用
  • 高通umb
  • scrollpane.setviewportview
  • bootstrap导航都有哪些
  • js声明数据类型
  • div+css布局的步骤
  • python数据结构与算法题库
  • Python文本相似性计算之编辑距离详解
  • javascript中的函数该如何理解
  • jquery easyui插件
  • python语言基本语法
  • android注入so
  • 北京增值税普通发票图片
  • 福建省税务局 电子
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设