package com.wuhongru.workman.myView
import android.content.Context
import android.graphics.Canvas
import android.graphics.Paint
import android.graphics.Path
import android.util.AttributeSet
import android.util.SparseArray
import android.view.MotionEvent
import android.view.View
import com.wuhongru.workman.dp
class TouchView3(context: Context, attrs: AttributeSet) : View(context, attrs) {
private val mPaint = Paint(Paint.ANTI_ALIAS_FLAG)
private val paths = SparseArray<Path>()
init {
mPaint.style = Paint.Style.STROKE
mPaint.strokeWidth = 3.dp
mPaint.strokeCap = Paint.Cap.ROUND
mPaint.strokeJoin = Paint.Join.ROUND
}
override fun onDraw(canvas: Canvas) {
super.onDraw(canvas)
for (i in 0 until paths.size()) {
canvas.drawPath(paths.valueAt(i),mPaint)
}
}
override fun onTouchEvent(event: MotionEvent): Boolean {
when(event.actionMasked){
MotionEvent.ACTION_DOWN,MotionEvent.ACTION_POINTER_DOWN->{
val index = event.actionIndex
val pointerId = event.getPointerId(index)
val path = Path()
path.moveTo(event.getX(index),event.getY(index))
paths.append(pointerId,path)
invalidate()
}
MotionEvent.ACTION_POINTER_UP,MotionEvent.ACTION_UP->{
val pointerId = event.getPointerId(event.actionIndex)
paths.remove(pointerId)
}
MotionEvent.ACTION_MOVE->{
for (i in 0 until paths.size()){
val pointerId = event.getPointerId(i)
val curPath = paths.get(pointerId)
curPath.lineTo(event.getX(i),event.getY(i))
}
invalidate()
}
}
return true
}
}
上一篇

touchSlop
2023-01-10
下一篇

自定义view练习-2
2023-01-08