对于自定义view,应该对于一个程序员来说并不是很陌生。自定义view主要分为三部分onMeasure测量、onLayout摆放和onDraw绘制。好了,言归正传,说一下怎样绘制圆环占比动画吧!!!
第一步:首先先自定义一个类,这里面主要绘制圆环的形状等一些状态。
public class CircleProgressBar extends View {
/**
* 绘制百分比的圆,一共有四部分,分别是里面的文字、背景圆、默认圆环、开始绘制的圆环;
* 思路:首先需要四支画笔, 设置画笔对应的属性等;
*/
private Paint roundColorPaint;//外圆画笔
private Paint mCirclePaint;//中心园的画笔
private Paint mTextPaint;//文字的画笔
private Paint mArcPaint;//外圆环的画笔
private int mCircleX;//设置圆心x坐标
private int mCircleY;//设置圆心y坐标
private float mCurrentAngle;//当前角度
private RectF mArcRectF;//画中心园的外接矩形,用来画圆环用
private float mStartSweepValue;//圆环开始角度
private float mTargetPercent;//设置目标的百分比(也就是后台返回的数据)
private float mCurrentPercent;//当前百分比
private int mRadius;//圆的半径
private int mCircleBackground;//中间圆的背景颜色
private int mRingColor;//外圆环的颜色 第二次画圆的颜色
private int roundColor; //外圆环的颜色 第一次画圆的颜色
private int mTextSize;//字体大小
private int mTextColor;//字体颜色
public CircleProgressBar(Context context) {
super(context);
//初始化数据
init(context);
}
public CircleProgressBar(Context context, AttributeSet attrs) {
super(context, attrs);
// 自定义属性,attr
// 使用TypedArray
//自定义属性 values/attr
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.PercentageRing);
//中间圆的背景颜色 默认 - 白色
mCircleBackground = typedArray.getColor(R.styleable.PercentageRing_circleBackground, 0xff000000);
//外圆环的颜色 默认 - 灰色
roundColor = typedArray.getColor(R.styleable.PercentageRing_circleColor, 0xfff5f5f5);
//外圆环的颜色 动态画圆 - 默认-红色
mRingColor = typedArray.getColor(R.styleable.PercentageRing_ringColor, 0xfff5f5f5);
//中间圆的半径 默认为80
mRadius = typedArray.getInt(R.styleable.PercentageRing_radius, 80);
//字体颜色 默认 - 灰色
mTextColor = typedArray.getColor(R.styleable.PercentageRing_textColor, 0xff999999);
//最后一定
文章浏览阅读634次。转自于:http://www.cppblog.com/vici/archive/2011/09/05/155103.html这篇文章发表于http://e-maxx.ru/algo/inclusion_exclusion_principle,原文是俄语的。由于文章确实很实用,而且鉴于国内俄文资料翻译的匮乏,我下决心将其翻译之。由于俄语对我来说如同乱码,而用Google直接翻译中文的话又变得面目_msk&1==0
文章浏览阅读280次。巧用linux服务器的/dev/shm/,如果合理使用,可以避开磁盘IO不给力,提高网站访问速度。首先让我们认识一下,什么是tmpfs和/dev/shm/?tmpfs是Linux/Unix系统上的一种基于内存的文件系统。tmpfs可以使用您的内存或swap分区来存储文件。由此可见,tmpfs主要存储暂存的文件。它有如下2个优势 : 1. 动态文件系统的大小。2. tmpfs 的另一个主要的好处是它..._linux 把缓存目录放入 /dev/shm
文章浏览阅读70次。点击上方“计算机视觉工坊”,选择“星标”干货第一时间送达大家好,本公众号现已开启线上视频公开课,主讲人通过B站直播间(bilibili号:3D视觉工坊:https://space.bili..._点云显示技术
文章浏览阅读484次。Could not get style shows in Administrator Control panel , 登陆到PHPBB的管理员后台之后, 无法安装和检测到任何的style, 但是事实上已经上传style包。
文章浏览阅读436次。执行:执行yum install docker-ce docker-ce-cli containerd.io报错解决报错container-selinux 」= 2:2.74 ; slirp4netns >= 0.4 ; fuse-overlayfs >= 0.7错误:软件包:3:docker-ce-19.03.12-3.el7.x86_64 (docker-ce-stable) 需要:container-selinux >= 2:2.74错误:软件包:dock_docker 20依赖
文章浏览阅读3.1k次。(GNU symbolic debugger) 是由 GNU 软件系统社区提供的。当下的 GDB 支持调试多种编程语言编写的程序,包括 C、C++、Go、Objective-C、OpenCL、Ada 等。实际场景中,GDB 更常用来调试 C 和 C++ 程序,同 GCC 配套组成了一套完整的开发环境。何谓调试?就是让代码一步一步慢慢执行,跟踪程序的运行过程。比如,可以让程序停在某个地方,查看当前所有变量的值,或者内存中的数据;也可以让程序一次只执行一条或者几条语句,看看程序到底执行了哪些代码。_gdb调试程序
文章浏览阅读94次。在Oracle10g中增加了dba_his_*类统计信息表,在瓶颈时间过时了的时候,可以参考这些表来诊断瓶颈来源。 1、确定时间段:select * fromdba_hist_snapshot ..._dba_hist_proc
文章浏览阅读168次。mmc_sd_init_card剩下的关于UHS-I的分支结构。uhs-I的初始化流程图如图:红线标出的部分是已经做了的事,与上一篇那个流程图是一致的,之后就是if分支中做的事。if分支中的函数mmc_sd_init_uhs_card:/* * UHS-I specific initialization procedure */static int mmc_sd..._mmc/sd controller initialization. mmc/sd card: mid: 0x70 read block: 512 byt
文章浏览阅读3.1k次,点赞2次,收藏2次。题目链接:http://codeforces.com/problemset/problem/998/D题目:Let's introduce a number system which is based on a roman digits. There are digits I, V, X, L which correspond to the numbers 1, 5, 10 and 5..._let's introduce a number system which is based on a roman digits. there are
文章浏览阅读1.4k次。android应用自适应多分辨率的解决方法 1. 首先是建立多个layout文件夹(drawable也一样)。在res目录下建立多个layout文件夹,文件夹名称为layout-800x480等。需要适应那种分辨率就写成什么。注意: a. 较大的数字要写在前面:比如layout-854x480而不能写layout-480x854._
文章浏览阅读3.3w次,点赞4次,收藏12次。XPATH如何选择不包含某一个属性的节点?今天博主在写一个xpath的时候就碰到了这个问题。我们知道选择包含某一特定属性的节点,可以使用例如//tbody/tr[@class]来选择。那么不含某属性的节点如何用xpath取得呢?这里可以用到not。例如排除一个属性的节点可以使用//tbody/tr[not(@class)]来写,排除一个或者两个属性可以使用//tbody/tr[no_xpath筛选不包含的节点
文章浏览阅读2.2k次。Tenable Nessus是一款使用方便的 IP、端口扫描工具。 利用它可以获得被扫描计算机的 ping 响应时间、主机名称、计算机名称、工作组、登录用户名、MAC地址、TTL、NetBios 信息等;您也可以指定扫描端口,查看目标计算机开放端口的情况。Nessus是一个顶级的漏洞扫描程序,它由Tenable Network SecurityNessus 被认为是目前全世界最..._tenable nessus