Android开发kotlin绘制曲线图
时间: 2023-08-05 22:48:12 浏览: 168
在 Android 开发中,我们可以使用 Kotlin 语言来绘制曲线图。下面是一个绘制曲线图的示例代码:
```kotlin
class CurveActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_curve)
val curveView = findViewById<CurveView>(R.id.curve_view)
// 设置曲线数据
val data = listOf(
Point(0f, 400f),
Point(50f, 350f),
Point(100f, 200f),
Point(150f, 250f),
Point(200f, 300f),
Point(250f, 450f),
Point(300f, 400f)
)
curveView.setData(data)
}
}
class CurveView(context: Context, attrs: AttributeSet) : View(context, attrs) {
private val paint = Paint()
private val path = Path()
private var data: List<Point>? = null
init {
paint.color = Color.BLACK
paint.style = Paint.Style.STROKE
paint.strokeWidth = 5f
}
fun setData(data: List<Point>) {
this.data = data
invalidate()
}
override fun onDraw(canvas: Canvas?) {
super.onDraw(canvas)
// 绘制坐标系
canvas?.drawLine(50f, 50f, 50f, height - 50f, paint)
canvas?.drawLine(50f, height - 50f, width - 50f, height - 50f, paint)
// 绘制曲线
data?.let {
if (it.isNotEmpty()) {
path.moveTo(it[0].x, it[0].y)
for (i in 1 until it.size) {
path.quadTo((it[i - 1].x + it[i].x) / 2, (it[i - 1].y + it[i].y) / 2, it[i].x, it[i].y)
}
canvas?.drawPath(path, paint)
}
}
}
}
data class Point(val x: Float, val y: Float)
```
在这个示例中,我们首先在 CurveActivity 中设置曲线数据,然后将数据传递给 CurveView 来绘制曲线。在 CurveView 中,我们使用了 setData 方法来设置曲线数据,并在 onDraw 方法中绘制了坐标系和曲线。其中,我们使用了 Path 类来存储曲线的路径,使用 Canvas 的 drawPath 方法来绘制曲线。在绘制曲线时,我们使用了二次贝塞尔曲线来连接所有的数据点。
阅读全文