位置: 编程技术 - 正文

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

  • 工资表怎么导入个税系统计算个税
  • 中国的税收制度是什么
  • 经营用的电饭锅有哪些
  • 残保金退回属于什么业务
  • 企业所得税季度申报填写示例
  • 新成立公司交税
  • 工作未满12个月被辞退时前月平均工资怎么计算
  • 预算管理的方法及应用
  • 当期进项税额大于销项税额
  • 电影剧本稿费代扣代缴个人所得税如何处理?
  • 应收账款坏账计提政策
  • 发票开的是推广服务费计入什么费用?
  • 党组织专项经费项社区服务队项目简介
  • 代扣代缴企业所得税申报期限
  • 不征税收入税收政策
  • 补偿款开具发票
  • 公司向个人借款利率最高多少
  • 应交税费计提是借方还是贷方
  • 公司名下的车怎么报废
  • 预缴税款是开票金额的多少
  • 利润表反映了哪些情况
  • 个人股权转让印花税在哪里申报
  • 发票拍照打印出来不清晰
  • 办理企业土地证要多少钱
  • 活动展开方式怎么写
  • 华为p60pro上市时间是几月
  • 条形码费用属于哪个科目
  • 手动添加mac
  • 营改增后房地产会计账务处理
  • 股东以非货币出资办理什么手续
  • mce文件是什么软件
  • vue移动和pc两套代码
  • 装饰工程公司主要做什么
  • 利润分配的会计分录怎么写
  • 社会保险个人部分计入什么科目
  • 个人博客登录入口
  • php获取mysql数据
  • 收到投资款投资人怎么感谢
  • php调试函数
  • 物流费属于什么税目
  • 残疾人保证金优惠减免怎么申请退税
  • mongodb $nin
  • 销售额包括哪些会计科目
  • sql server数据表
  • 利润表一般采用
  • 企业财务费用为负好不好
  • 建筑业异地预交税款怎么入库
  • 自营工程的账务处理
  • 房租给托管公司
  • 冲减和冲销的会计分录
  • 结算专用章是财务章吗
  • 记账凭证的填制与审核
  • boxjs
  • win8 itunes
  • Mac OS X El Capitan公测版下载地址及安装教程图解
  • linux系统开机黑屏啥也没有
  • windows无法运行
  • win7系统打开网络看不到其他电脑
  • 登录远程linux系统可以用的方法
  • win8的ie浏览器在哪里
  • win1020h2版好不好
  • windows自带软件有哪些
  • 磁盘空间不足怎么弄
  • win7更改磁盘分区
  • 天气8.2.0.308版本
  • Win10预览版更新弹窗如何关闭
  • win10更新只能暂停35天
  • linux中vi命令是什么意思
  • perl实例
  • cocos2dx游戏开发
  • 怎么通过微信号查到对方的手机号码
  • unity3d最新api
  • javascript核心技术
  • node.js 10实战
  • 自定义view的基本流程
  • python常用的内置逻辑判断函数
  • 北京比较大五金市场在哪
  • 如何查询车辆购置税完税证明
  • 税务登录 河北省地方税务局
  • 余姚市税务局咨询热线
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设