Android-自定义view之可变化的立方体

本文介绍如何在Android中实现一个可以根据值变化高度的立方体自定义View。通过分析设计图,理解立方体的构成并利用canvas的drawPath绘制平面,drawCircle绘制顶部圆点,drawText显示值,以及drawPath画出延伸线。详细代码以kotlin编写,并给出了在activity中的使用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

曾经碰到过这样一个需求,设计图如下:
这里写图片描述
图中的三个立方体高度需要根据值的变化而变化。

设计图分析

设计图主要由三个立方体组成,在立方体顶部延伸出一条线,线上是所对应的值。
每个立方体有三个可见的平面,把三个平面画出来,立方体也就出来了。
立方体有一个重合点,以这个点为基准点,每个平面的四个点都直接或间接地由基准点计算产生。
每个立方体的高度,根据值的大小确定。

技术点

平面:drawPath
立方体:三个平面组成
顶部圆点:drawCircle
延伸线:drawPath
值:drawText

代码(kotlin)

class ChartView(context: Context) : View(context) {
    private var basePoint: Point
    private var mPaint = Paint()
    //最上方四边形,左右两点之间距离的一半
    private val rectX = 120
    private val rectY = 90//这个是上下两点距离的一半
    private var redHeight = 0f//红色立方体高度,计算获得
    private var greenHeight = 0f//同上
    private var blueHeight = 0f//同上
    private var baseHeight = 0f//图形加数字所占的高度
    private var setAlpha = false//是否透明
    private val alphaValue = 210//透明度值
    init {
        val displaySize = getDisplaySize()
        val width = displaySize.x
        val height = displaySize.y
        println("height: $height -- width: $width"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值