Манипуляции с изображениями при касании неэффективны!

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

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

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

person dirhem    schedule 28.10.2010    source источник


Ответы (2)


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

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

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

person EboMike    schedule 28.10.2010

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

person hackbod    schedule 29.10.2010