Я работаю в пользовательском представлении, которое расширяет View
У меня есть arraylist, который содержит пару Path и Paint
private lateinit var fingerPathForPair: Path
private lateinit var fingerPaintForPair:Paint
private var arrayListFingerPath = arrayListOf< Pair< Path, Paint > >()
Почему при вызове второй строкив приведенном ниже фрагменте кода (, который в моем коде находится внутри сенсорного прослушивателя View в разделе MotionEvent.ACTION_DOWN
), я все еще могу добавить строки к fingerPathForPair
, например, когда я использую код fingerPathForPair.lineTo(touchPosX, touchPosY)
, которыйнаходится в моей MotionEvent.ACTION_MOVE
части слушателя касания
fingerPathForPair = Path()
arrayListFingerPath.add(Pair(fingerPathForPair, fingerPaintForPair))`
Если вы думаете, что публикация всего моего класса поможет вам, пожалуйста, спросите, и я опубликую правку.
ДОПОЛНЕНИЕ 1
Код для удаления последнего мазка, сделанного пользователем на холсте
fun undo()
{
// Get paths from main finger paths array list and add it to the undo store
if (this.arrayListFingerPath.isNotEmpty())
{
// Remove the last modified path from the main arraylist of finger paths and add it to the undo store
this.arrayListFingerPathUndoStore.add(this.arrayListFingerPath.removeAt(this.arrayListFingerPath.lastIndex))
invalidate()
}
}