美文网首页具体自定义控件
自定义控件:实现饼状图选中效果

自定义控件:实现饼状图选中效果

作者: 好学人 | 来源:发表于2019-11-19 20:21 被阅读0次

业务需求

公司产品的用户中心有一个资产统计模块,需要用一个饼状图展示用户资产的分类统计情况,效果图如下:

思路分析

首先,这种效果肯定是要使用自定义控件来实现的。

  1. 普通的饼状图很好实现,使用canvas.drawArc()方法绘制弧形即可。

  2. 那选中部分的突出效果该如何实现呢?我们可以扩大绘制弧形的矩形区域,同时调整笔记的宽度,即可绘制出如图的突出选中效果。

以下是Kotlin版的代码实现。

代码实现(Kotlin)

/**
 * 自定义饼状图
 */
class AssetPieChart(context: Context, attrs: AttributeSet) : View(context, attrs) {

    private val paint = Paint()

    private val rectF = RectF(0f, 0f, 400f, 400f)

    /**
     * 对自定义控件进行测量
     */
    override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec)
        val width = View.resolveSize(500, widthMeasureSpec)
        val height = View.resolveSize(500, heightMeasureSpec)
        this.setMeasuredDimension(width, height)
    }

    override fun onDraw(canvas: Canvas) {
        // 移动画布的坐标系
        canvas.translate(100f, 100f)
        // 绘制环形饼状图的普通部分
        paint.strokeWidth = 100f
        paint.color = Color.MAGENTA
        paint.style = Paint.Style.STROKE
        canvas.drawArc(rectF, 0f, -300f, false, paint)
        // 绘制环形饼状图选中(突出)部分
        val offset = -5f
        rectF.inset(offset, offset) // 扩大矩形的快捷方法
        paint.strokeWidth -= offset * 2
        paint.color = Color.GREEN
        canvas.drawArc(rectF, 60f, -60f, false, paint)
    }
}

总结思考

在绘制弧形时,通过改变弧形所在的矩形区域大小以及调整画笔的宽度,即可实现饼状图的选中效果。

思考:如何确定弧形区域的点击范围?

相关文章

  • 自定义控件:实现饼状图选中效果

    业务需求 公司产品的用户中心有一个资产统计模块,需要用一个饼状图展示用户资产的分类统计情况,效果图如下: 思路分析...

  • 自定义柱状图效果实现

    项目开发中时不时会碰到柱状图、折线图、饼状图等效果,这些效果肯定是需要自定义控件通过绘制或者摆放来实现,当然了,也...

  • 自定义view

    核心三点: 布局 绘制 触摸反馈 作用: 自定义绘制可以实现自带控件的效果,也可以实现复杂的效果,比如饼图,直方图...

  • Qt编写自定义控件41-自定义环形图

    一、前言 自定义环形图控件类似于自定义饼状图控件,也是提供一个饼图区域展示占比,其实核心都是根据自动计算到的百分比...

  • iOS CGContextRef

    一、绘制饼状图 饼状图的简单实现代码:

  • Flutter 自定义View之 饼状图

    今天跟大家分享的是用Flutter来实现的自定义饼状图,下面来看看效果! 通过点击左右两侧的按钮,可以实现扇形切换...

  • Android自定义View实现饼状图

    1.简单实现饼状图效果1.1、创建一个实体类存储数据(数值、颜色、开始角度、结束角度) 1.2、自定义View画饼...

  • 安卓自己简单实现饼状图

    前言 网上有很多饼状图的控件,这里就只是简单实现一下,没有太多功能,代码量很少 正文 先把效果图亮出来给大家看一下...

  • Android自定义控件:饼状图

    效果图 实现原理分析 每段弧线的绘制:根据每个数据所占总数的百分比得出该弧线的度数(一共360度),然后使用can...

  • Android 圆角闪光遮照效果

    效果图 实现原理 代码创建自定义属性自定义控件使用方法 PorterDuff.Mode 简介示例图代码示例Port...

网友评论

    本文标题:自定义控件:实现饼状图选中效果

    本文链接:https://www.haomeiwen.com/subject/ejrgictx.html