Манипулирование изображением при касании неэффективно - PullRequest
0 голосов
/ 29 октября 2010

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

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

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

Ответы [ 2 ]

2 голосов
/ 29 октября 2010

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

1 голос
/ 29 октября 2010

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

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

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

...