0

У меня есть два наложенных изображения, и я копирую пиксели с нижнего изображения на верхнее изображение, а ACTION_MOVE. Моя цель - дать пользователю ощущение стирания, но иногда оно не копирует (стирает) некоторые части, и становится хуже, если событие касания происходит быстро (волоча пальцем быстро).Манипуляция изображения во время сенсорного события неэффективна!

Это код, я использую для копирования пикселей

mutable.getPixels(pixels, 0, width, xPos, yPos, width, height) ; 
mutable2.setPixels(pixels, 0, width,xPos, yPos, width, height) ; 

ответ

1

Храните все сенсорные события в очереди и делать манипуляции с изображениями во втором потоке. Никогда не делайте ничего дороже в основной теме!

Также попробуйте минимизировать область, в которой вы получаете и устанавливаете пиксели. И, конечно, если у вас уже есть пиксели, не получайте их снова (при условии, что они не изменились).

Кроме того, если вы делаете много тяжелой работы в своих манипуляциях, вы можете рассмотреть JNI как последнее средство. Действительно, на самом деле последнее средство.

2

Я не буду рассматривать производительность (это может быть хорошо сделать рендеринг в основном потоке, а может и нет, в зависимости от того, что вы делаете). Однако, если вам нужно получить все данные касания, вы должны использовать MotionEvent.getHistoricalSize() и связанные с ним методы для получения любых промежуточных перемещений, которые произошли с последнего обработчика MotionEvent, который вы обработали, до текущей позиции в этом MotionEvent.

Смежные вопросы