最近公司开发的SDK中需要使用圆形加载进度条,而且说要那种动态的转圈圈的那种进度条。当然这种进度条想实现很简单,用几个资源图片,以动画循环播放就行。但考虑到是SDK,有资源文件不好打包,想打包就要用到资源映射什么的,太麻烦,干脆搞个简单的没有资源文件的~~

一、 进度条实现

代码里面已经有解释,代码也非常简单,看看就明白。

package com.mobisummer.ads.wall;import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;public class CircleProgressBar extends View {private static int START = -30;private static int SWEEP = 0;private static int FLAG = 1;private static final int DELAY = 100; // 延迟private int progressStrokeWidth; //进度环的厚度// 画圆所在的距形区域private RectF oval;private Paint paint;public CircleProgressBar(Context context, AttributeSet attrs, int stroke) {super(context, attrs);oval = new RectF();paint = new Paint();progressStrokeWidth = stroke;}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);int width = this.getWidth();int height = this.getHeight();if (width != height) {int min = Math.min(width, height);width = min;height = min;}paint.setAntiAlias(true); // 设置画笔为抗锯齿paint.setColor(Color.WHITE); // 设置画笔颜色canvas.drawColor(Color.TRANSPARENT); // 白色背景
//      int progressStrokeWidth = 10;paint.setStrokeWidth(progressStrokeWidth); // 线宽paint.setStyle(Paint.Style.STROKE);oval.left = progressStrokeWidth / 2; // 矩形的左边位置。oval.top = progressStrokeWidth / 2; // 矩形的上边位置。oval.right = width - progressStrokeWidth / 2; // 矩形的右边位置。oval.bottom = height - progressStrokeWidth / 2; // 矩形的下边位置。canvas.drawArc(oval, -90, 360, false, paint); // 绘制白色圆圈,即进度条背景paint.setColor(Color.rgb(34, 139, 34)); //设置圆进度条的颜色//计算进度圆弧的弧度START += 30;if (START > 360) {START -= 360;}if (SWEEP > 270) {FLAG = -1;} else if (SWEEP < 60) {FLAG = 1;}SWEEP += 20*FLAG;canvas.drawArc(oval, START, SWEEP, false, paint); // 绘制进度圆弧getHandler().postDelayed(runnable, DELAY); //循环刷新}// 重绘线程private Runnable runnable = new Runnable() {@Overridepublic void run() {// 自动刷新invalidate();}};}

二、 进度条的使用

     Resources res = getResources();// 添加进度 条mProgressbar = new CircleProgressBar(mActivity, null, (int)res.getDimension(R.dimen.circle_progressbar_stroke));//屏幕宽高mWidth = DimensionUtil.getDisplayWidth(mActivity);mHeight = DimensionUtil.getDisplayHeight(mActivity);DebugUtil.d(TAG, "mWidth : " + mWidth + ", mHeight : " + mHeight);//获取进度条半径大小int size = (int) res.getDimension(R.dimen.circle_progressbar_radius);DebugUtil.d(TAG, "size : " + size );mProgressbar.setLayoutParams(new LayoutParams(size, size,(mWidth - size) / 2, (mHeight - size) / 2));addView(mProgressbar);

Android自定义没有资源文件的圆形进度条ProgressBar相关推荐

  1. 精通Android自定义View(十二)绘制圆形进度条

    1 绘图基础简析 1 精通Android自定义View(一)View的绘制流程简述 2 精通Android自定义View(二)View绘制三部曲 3 精通Android自定义View(三)View绘制 ...

  2. android 自定义音乐圆形进度条,Android自定义View实现音频播放圆形进度条

    本篇文章介绍自定义View配合属性动画来实现如下的效果 实现思路如下: 根据播放按钮的图片大小计算出圆形进度条的大小 根据音频的时间长度计算出圆形进度条绘制的弧度 通过Handler刷新界面来更新圆形 ...

  3. Android 自定义View实现环形带刻度的进度条

    本篇文章讲的是自定义View实现环形带刻度的进度条.和往常一样,主要还是想总结一下自定义View实现环形带刻度的进度条的开发过程以及一些需要注意的地方. 按照惯例,我们先来看看效果图 一.我们如何来实 ...

  4. android圆形进度条ProgressBar颜色设置

    原帖地址:http://www.apkbus.com/android-19012-1-1.html xml布局文件需加入如下的进度条构件: Java代码 <ProgressBar android ...

  5. android+属性动画+高度,android 自定义view+属性动画实现充电进度条

    近期项目中需要使用到一种类似手机电池充电进度的动画效果,以前没学属性动画的时候,是用图片+定时器的方式来完成的,最近一直在学习动画这一块,再加上复习一下自定义view的相关知识点,所以打算用属性动画和 ...

  6. Android -- 自定义StepView实现个人信息验证进度条

    1,项目中要用到个人信息验证的在网上找了一下,好像有封装好了的StepView,首先感谢一下作者,这是作者的地址,效果图如下: 2,正准备撸起袖子就是一顿复制粘贴的时候,发现效果图成这个样子了(其实这 ...

  7. 三种方式实现自定义圆形进度条ProgressBar

    2019独角兽企业重金招聘Python工程师标准>>> 一.通过动画实现 定义res/anim/loading.xml如下: [html] view plain copy print ...

  8. Android自定义View之画圆环(进阶篇:圆形进度条)

    前言: 如果你想读懂或者更好的理解本篇文章关于自定义圆环或圆弧的内容.请你务必提前阅读下Android自定义View之画圆环(手把手教你如何一步步画圆环).在这篇文章中,详细描述了最基本的自定义圆环的 ...

  9. 【Android 应用开发】 自定义 圆形进度条 组件

    转载著名出处 : http://blog.csdn.net/shulianghan/article/details/40351487 代码下载 : -- CSDN 下载地址 : http://down ...

最新文章

  1. VMware虚拟机上的文件如何和Windows进行共享
  2. 用python计算贷款_Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例...
  3. android低电量提示,Android4.4开发之电池低电量告警提示原理与实现方法分析
  4. php ai库,收藏 | 深度学习框架、AI库、ML库、NLP库、CV库汇总!
  5. 【Dreamweaver】前端初学者开发利器Dreamweaver快捷键大全
  6. Javascript-逻辑运算符()
  7. NDK编译doubango时出现错误:undefined reference to ‘stderr‘
  8. CMOS中的 latch-up 闩锁效应、添加tap解决latch-up、使用combained area绘制TAP TAP的作用 IC后端版图【VLSI】
  9. 【UG NX MCD 机电一体化概念设计】UG NX MCD+PLCSIM Advanced联合仿真实例(二 )仿真序列
  10. win7 64 旗舰版虚拟GPU-VMware下+vs2013安装caffe+matlab+python
  11. 模拟电路实验 01 - | 基本共射放大电路
  12. 松柏先生:一个好战略,胜过1000个创意!
  13. 生物信息-学习从NCBI上下载数据
  14. Hive之——数据定义
  15. 区间dp(含模板及例题)
  16. java dbutils工具类_DbUtils工具类使用
  17. 滴答顺风车怎么抢90%以上的订单_想来赚顺风车钱的补课内容都给你准备好了
  18. w10投影全屏设置_win10如何让投影仪铺满全屏
  19. 官宣 .NET 7 预览版3
  20. Apple 公司的电影预告片网站

热门文章

  1. AGV小车如何实现无人搬运自动导引代替人工
  2. python 模拟浏览器selenium_从零开始写Python爬虫 --- 3.1 Selenium模拟浏览器
  3. Processing 安装外部库 Box2d
  4. 数学建模之层次分析法模型
  5. java计算机毕业设计乌托邦宿舍管理系统源代码+数据库+系统+lw文档
  6. 深圳哪家服务器速度最快,深圳区域该选择腾讯云哪个节点好?
  7. Linux学习第九节课
  8. python进行Word解析
  9. 商城网站建设怎么做?这五个技巧告诉你!
  10. vnr光学识别怎么打开_VNR教程