Нарисуйте путь постепенно с getSegment - PullRequest
1 голос
/ 04 марта 2020

Я создал собственный вид для рисования линии, но постепенно. Я пытался использовать PathMeasure и getSegment, но эффект не работает. Он просто продолжает рисовать линию уже с окончательным размером.

private val paint = Paint().apply {
    isAntiAlias = true
    color = Color.WHITE
    style = Paint.Style.STROKE
    strokeWidth = 10f
}


override fun onDraw(canvas: Canvas?) {
    super.onDraw(canvas)

    val path = Path().apply {
        moveTo(width/2.toFloat(), height/2.toFloat())
        lineTo(width/2.toFloat(), height/4.toFloat())
    }

    val measure = PathMeasure(path, false)
    val length = measure.length
    val partialPath = Path()
    measure.getSegment(0.0f, length, partialPath, true)
    partialPath.rLineTo(0.0f, 0.0f)
    canvas!!.drawPath(partialPath, paint)
}

Ответы [ 2 ]

0 голосов
/ 06 марта 2020

Вот как я это сделал, как объяснил @mohandes:

private var path = Path()
private var paint = Paint()
private val dashes = floatArrayOf(125f, 125f)

init {

    paint = Paint().apply {
        isAntiAlias = true
        color = Color.WHITE
        style = Paint.Style.STROKE
        strokeWidth = 10.0f
        pathEffect = CornerPathEffect(8f)
    }

    path = Path().apply {
        moveTo(312f, 475f)
        lineTo(312f, 375f)
    }


    val lineAnim = ValueAnimator.ofFloat(100f, 0f)
    lineAnim.interpolator = LinearInterpolator()
    lineAnim.addUpdateListener {
        paint.pathEffect = ComposePathEffect(DashPathEffect(dashes, lineAnim.animatedValue as Float), CornerPathEffect(8f))
        invalidate()
    }

    lineAnim.duration = 1000
    lineAnim.start()
}

override fun onDraw(canvas: Canvas?) {
    super.onDraw(canvas)
    canvas!!.drawPath(path, paint)
}
0 голосов
/ 05 марта 2020

Вы можете сделать это с помощью DashPathEffect

DashPathEffect dashPathEffect = new DashPathEffect(new float[]{1000.0f,9999999},0);
Paint.setPathEffect(dashPathEffect);

, изменив 1000 на свою длину («вкл.» В Da sh)

и установив максимальное значение 99999999 («выкл.») детали в Da sh)

играют с этими параметрами и читают эту статью пожалуйста

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...