Android 自定义view绘制圆环占比动画_android 自定义圆环占比动画-程序员宅基地

技术标签: 自定  view  

对于自定义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);
        //最后一定
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43049358/article/details/88183586

智能推荐

容斥原理_msk&1==0-程序员宅基地

文章浏览阅读634次。转自于:http://www.cppblog.com/vici/archive/2011/09/05/155103.html这篇文章发表于http://e-maxx.ru/algo/inclusion_exclusion_principle,原文是俄语的。由于文章确实很实用,而且鉴于国内俄文资料翻译的匮乏,我下决心将其翻译之。由于俄语对我来说如同乱码,而用Google直接翻译中文的话又变得面目_msk&1==0

linux dev/shm,巧用linux服务器下的/dev/shm/,避开磁盘IO不给力!-程序员宅基地

文章浏览阅读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..._点云显示技术

【phpBB 】style button dose not show on Admin control panel-程序员宅基地

文章浏览阅读484次。Could not get style shows in Administrator Control panel , 登陆到PHPBB的管理员后台之后, 无法安装和检测到任何的style, 但是事实上已经上传style包。

yum install dockers 20 依赖_docker 20依赖-程序员宅基地

文章浏览阅读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依赖

GDB调试:教你简单了解并使用GDB调试程序-程序员宅基地

文章浏览阅读3.1k次。(GNU symbolic debugger) 是由 GNU 软件系统社区提供的。当下的 GDB 支持调试多种编程语言编写的程序,包括 C、C++、Go、Objective-C、OpenCL、Ada 等。实际场景中,GDB 更常用来调试 C 和 C++ 程序,同 GCC 配套组成了一套完整的开发环境。何谓调试?就是让代码一步一步慢慢执行,跟踪程序的运行过程。比如,可以让程序停在某个地方,查看当前所有变量的值,或者内存中的数据;也可以让程序一次只执行一条或者几条语句,看看程序到底执行了哪些代码。_gdb调试程序

随便推点

通过dba_hist_*来进行诊断-程序员宅基地

文章浏览阅读94次。在Oracle10g中增加了dba_his_*类统计信息表,在瓶颈时间过时了的时候,可以参考这些表来诊断瓶颈来源。 1、确定时间段:select * fromdba_hist_snapshot ..._dba_hist_proc

(续)linux SD卡初始化---mmc_sd_init_card函数-程序员宅基地

文章浏览阅读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

CodeForces - 998D - Roman Digits(打表 找规律)(本来应该是推公式的题吧)_let's introduce a number system which is based on -程序员宅基地

文章浏览阅读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

Android应用程序自适应屏幕大小的解决办法_<application android:screenorientation="landscape-程序员宅基地

文章浏览阅读1.4k次。android应用自适应多分辨率的解决方法 1. 首先是建立多个layout文件夹(drawable也一样)。在res目录下建立多个layout文件夹,文件夹名称为layout-800x480等。需要适应那种分辨率就写成什么。注意: a. 较大的数字要写在前面:比如layout-854x480而不能写layout-480x854._

XPATH如何选择不包含某一个属性的节点?_xpath筛选不包含的节点-程序员宅基地

文章浏览阅读3.3w次,点赞4次,收藏12次。XPATH如何选择不包含某一个属性的节点?今天博主在写一个xpath的时候就碰到了这个问题。我们知道选择包含某一特定属性的节点,可以使用例如//tbody/tr[@class]来选择。那么不含某属性的节点如何用xpath取得呢?这里可以用到not。例如排除一个属性的节点可以使用//tbody/tr[not(@class)]来写,排除一个或者两个属性可以使用//tbody/tr[no_xpath筛选不包含的节点

IP端口扫描工具(Tenable Nessus)的简介-程序员宅基地

文章浏览阅读2.2k次。Tenable Nessus是一款使用方便的 IP、端口扫描工具。 利用它可以获得被扫描计算机的 ping 响应时间、主机名称、计算机名称、工作组、登录用户名、MAC地址、TTL、NetBios 信息等;您也可以指定扫描端口,查看目标计算机开放端口的情况。Nessus是一个顶级的漏洞扫描程序,它由Tenable Network SecurityNessus 被认为是目前全世界最..._tenable nessus