自定义圆形进度条

示例.png

示例 (2).png

示例 (3).png

示例 (4).png

实现

override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {

super.onSizeChanged(w, h, oldw, oldh)

//圆心位置

centerPosition!!.x = w / 2

centerPosition!!.y = h / 2

//半径

val maxCirWidth = Math.max(mCirWidth!!, mBgCirWidth!!)

val minWidth =

Math.min(w - paddingLeft - paddingRight - 2 * maxCirWidth, h - paddingBottom - paddingTop - 2 * maxCirWidth)

raduis = minWidth / 2

mOuterRaduis = raduis!! + maxCirWidth / 2

//矩形坐标

mRectF!!.left = centerPosition!!.x - raduis!! - maxCirWidth / 2

mRectF!!.top = centerPosition!!.y - raduis!! - maxCirWidth / 2

mRectF!!.right = centerPosition!!.x + raduis!! + maxCirWidth / 2

mRectF!!.bottom = centerPosition!!.y + raduis!! + maxCirWidth / 2

if (isGradient!!) {

sweepGradientCircle()//圆环颜色渐变

}

}

private fun drawText(canvas: Canvas?) {

canvas!!.drawText(

mValue.toString(),

centerPosition!!.x.toFloat(),

centerPosition!!.y.toFloat(),

mValuePaint!!

)

if (mUnit != null || mUnit != "") {

canvas.drawText(

mUnit.toString(),

centerPosition!!.x + mValuePaint!!.measureText(mValue.toString()) / 2,

centerPosition!!.y.toFloat(),

mUnitPaint!!

)

}

if (mHint != null || mHint != "") {

canvas.drawText(

mHint.toString(),

centerPosition!!.x.toFloat(),

centerPosition!!.y - mHintPaint!!.ascent() + 3,

mHintPaint!!

)

}

}

/**

* 使用渐变色画圆

*/

private fun sweepGradientCircle() {

mSweepGradient =

SweepGradient(centerPosition!!.x.toFloat(), centerPosition!!.y.toFloat(), mGradientColors!!, null)

mCirPaint!!.shader = mSweepGradient

}

/**

* 画圆

*/

private fun drawCircle(canvas: Canvas?) {

canvas!!.save()

if (mShadowIsShow!!) {

mCirPaint!!.setShadowLayer(mShadowSize!!, 0f, 0f, mShadowColor!!)//设置阴影

}

//画背景圆

canvas.drawArc(mRectF!!, mStartAngle!!, mSweepAngle!!, false, mBgCirPaint!!)

//画圆

canvas.drawArc(mRectF!!, mStartAngle!!, mSweepAngle!! * mPercent!!, false, mCirPaint!!)

canvas.restore()

}

圆形进度条api

属性

对应方法

名称

类型

默认值

antiAlias

是否开启抗锯齿

Boolean

false

mCirWidth

外圆环宽度

Float

15f

mCirColor

外圆环颜色

Int

Color.YELLOW

mBgCirWidth

底圆环宽度

Float

14f

mBgCirColor

底圆环颜色

Float

Color.GRAY

animTime

动画时间

Int

1000

value

setValue(value: String,maxValue: Float)

设置值

String

""

valueSize

值大小

Float

15F

valueColor

值颜色

Int

Color.BLACK

maxvalue

setValue(value: String,maxValue: Float)

设置最大值

Float

100F

unit

单位

Float

%

unitSize

单位大小

Float

8F

unitColor

单位颜色

Int

Color.GRAY

hint

提示语

Float

”“

hintSize

提示语大小

Float

10F

hintColor

提示语颜色

Int

Color.GRAY

startAngle

圆环起始角度

Float

270F

sweepAngle

圆环滑过角度

Float

360F

gradient

setGradientColors(gradientColors: IntArray)

渐变色

IntArray

intArrayOf(Color.BLACK, Color.GRAY, Color.BLUE)

isGradient

setIsGradient(isGradient:Boolean)

是否渐变色

Boolean

false

smallCirEnable

setSmallCircleEnable(enable:Boolean)

是否显示起始小圆

Boolean

false

smallCirColor

起始小圆颜色

Int

Color.WHITE

smallCirWidth

起始小圆半径

Float

7F

shadowShow

setShadowEnable(enable: Boolean)

是否显示阴影

Boolean

false

shadowSize

阴影大小

Float

10F

shadowColor

阴影颜色

Int

Color.BLACK

digit

setDigit(digit:Int)

保留小数位数

Int

2

isanim

是否需要动画

Boolean

true

使用

将MyCircleProgressView和attrs.xml下的MyCircleProgressView拷贝到自己的项目下,并修改控件引用,即可使用。

地址

android 圆形拖动条,Android圆形进度条自定义相关推荐

  1. android图标随着进度条动画,Android开发之ProgressBar字体随着进度条的加载而滚动...

    在网上翻阅了很多关于ProgressBar滚动效果,但是始终没有找到适合项目中的这种效果,故自己写这篇文章,记录一下写作过程,给大家做一个参考.先看下最终效果效果图 我这里用的是LICEcap软件录制 ...

  2. android解压zip文件进度条,Android实现文件解压带进度条功能

    解压的工具类 package com.example.videodemo.zip; public class ZipProgressUtil { /*** * 解压通用方法 * * @param zi ...

  3. android 安全检测 动画,Android仿小米安全中心检测进度条效果

    模仿小米安全中心检测效果 废话少说,咱们先上效果图: 这个效果的使用场景并不多,主要是各种检测的时候,比如垃圾清理,手机安全检测, 当然如果你不嫌弃这个效果丑, 也可以用作进度条.哈哈. 下面说点干货 ...

  4. bootstrap 滚动 进度条_bootstrap动态进度条怎么搞

    在本教程中,您将看到如何使用 Bootstrap 创建加载.重定向或动作状态的进度条. Bootstrap 进度条使用 CSS3 过渡和动画来获得该效果.Internet Explorer 9 及之前 ...

  5. Unity实现类似于苹果视频播放器视频播放进度条及声音进度条拖拽功能

    Unity实现类似于苹果视频播放器视频播放进度条及声音进度条拖拽功能 前言 我在之前的博客里介绍过关于VideoPlayer的简单使用流程,之前一直想研究下videoPlayer中的使用进度条控制视频 ...

  6. android 图片处理过程中添加进度条,[Android] 随时拍图像处理部分总结及源码分......

    ? ? ? ? 随着寒假到来,终于有时间总结下Android这个随手拍的课程作业了,同时分享了我完成的这部分对图像处理的心得吧!你可以结合demo来阅读这篇文章,希望对大家有所帮助. ? ? ? ? ...

  7. 自定义ProgressBar(包括自定义图片,带进度的圆形进度条、长方形进度条)

    转载请注明原博客地址:http://blog.csdn.net/gdutxiaoxu/article/details/51545889 参考博客:http://blog.csdn.net/lmj623 ...

  8. android进度条随时间走,每天一点Android干货-时间与日期、进度条

    timePicker.setIs24HourView(true); //设置是否以24小时制显示 timePicker.getCurrentHour();//获取当前时钟数 timePicker.ge ...

  9. android canvas_Android仿IOS11 控制中心进度条

    这篇文章我们就用简单的自定义View实现类似iOS11的控制中心里边出现的很新颖的进度条. 先看一下目标效果图,以及最后的实现效果: 自定义属性分析 名字 释义 progressMax 最大值 pro ...

  10. android按钮进度动画,android – 在按钮后面放置一个进度条

    要做到这一点,我必须首先在main.xml中定义按钮,然后是进度条,如下所示: android:id="@+id/search_button" android:layout_wid ...

最新文章

  1. python-opencv 常用工具总结
  2. 如何使用React.js和Heroku快速实现从想法到URL的转变
  3. 商务礼仪 细节决定成败
  4. [Angularjs]ng-show和ng-hide
  5. break和continue特殊玩法“标签”
  6. python从入门到实践 第12章 武装飞船 之 调整飞船的速度程序实践
  7. SQL(二)- 基础查询语句
  8. 强化学习在美团“猜你喜欢”的实践
  9. git代码托管 · 操作举例: “git bash here ”(全程操作讲解) - git命令篇
  10. 安装Nginx必要组件时解决 yum -y install pcre pcre-devel安装出错
  11. 小米总参php面试题_php面试题之二——Javascript(基础部分)
  12. checkboxlist详细用法、checkboxlist用法、checkboxlist
  13. 5.29 狡猾的商人(把后天的写了,老师不会打我吧)
  14. 高通又失一员大将,英特尔成功挖角高通CFO
  15. c语言原型,C语言原型模式
  16. 定义视图函数时,指定具体的监听方法,访问时如果请求的方法没有设置,那么会报方法不允许 --...
  17. 东软c语言课后习题,C语言笔试题及参考答案-东软集团
  18. keil的终极配色方案(提供配置文件)
  19. 个人网站建设基本步骤解析
  20. debian apache2不执行php,Debian下Apache2的安装与配置

热门文章

  1. Uva 167 The Sultan's Successors(dfs)
  2. python绘制散点图的步骤_python绘制散点图
  3. 42. 通俗易懂大数据实时计算Storm教程
  4. 7-111 输出大写英文字母
  5. html 输入年份,判断是否是闰年
  6. 绘制管理组织结构图方法介绍
  7. 钢铁侠材质制作——3、基础光照模型实现
  8. [转]Linux主机驱动与外设驱动分离思想
  9. 液压杆原理//2021-1-30
  10. win10动态壁纸怎么设置_酷狗也能设置动态壁纸???