Search code examples
androiddrawing

How to draw "path from circles" from A point to B point in onDraw


I need to draw on the canvas in onDraw path from A to B with many circles (bubbles). Like that:

enter image description here

How to do this?

I already have pins that drawing by click on the image (point getting from array)

@SuppressLint("DrawAllocation")
    override fun onDraw(canvas: Canvas) {
        super.onDraw(canvas)

        invertedPinsCoordinates.forEach {
            val marker = getPinForCoordinates(it)
            val matrixMarker = Matrix()
            matrixMarker.setTranslate(it.x, it.y)
            matrixMarker.postConcat(mMatrix)
            canvas.drawBitmap(marker, matrixMarker, null)
        }
    

}

But don't understand how to draw path from circles. Please help!


Solution

  • I created the solution. This is algorithm to get points between:

    private fun getPointsToDraw(a: CoordinatesEntity, b: CoordinatesEntity): List<CoordinatesEntity> {
                val points = ArrayList<CoordinatesEntity>()
                val numberOfPoints = 5
                val stepX = (b.x - a.x) / numberOfPoints
                val stepY = (b.y - a.y) / numberOfPoints
        
                points.add(a)
                for (i in 0 until numberOfPoints) {
                    val lastPoint = points.last()
                    points.add(CoordinatesEntity(lastPoint.x + stepX, lastPoint.y + stepY))
                }
                points.add(b)
        
                return points
            }
    

    data class:

    data class CoordinatesEntity(var x: Float, var y: Float)
    

    Of course we can get only fixed points between, cause there is indefinite count. Here is how to write them.