曾经碰到过这样一个需求,设计图如下:

图中的三个立方体高度需要根据值的变化而变化。
设计图分析
设计图主要由三个立方体组成,在立方体顶部延伸出一条线,线上是所对应的值。
每个立方体有三个可见的平面,把三个平面画出来,立方体也就出来了。
立方体有一个重合点,以这个点为基准点,每个平面的四个点都直接或间接地由基准点计算产生。
每个立方体的高度,根据值的大小确定。
技术点
平面: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"