0

J'ai deux images superposées et je copie les pixels de l'image du bas à l'image supérieure tout ACTION_MOVE. Mon but est de donner un sentiment d'effacement à l'utilisateur mais parfois il ne copie pas (efface) certaines parties et il devient pire si l'événement tactile est rapide (faire glisser le doigt rapidement).La manipulation d'image lors d'un événement tactile est inefficace!

C'est le code que je utilise pour les pixels copie

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

Répondre

1

magasin tous les événements tactiles dans une file d'attente et faire la manipulation d'images dans un second fil. Ne faites jamais rien de coûteux dans le fil principal!

Essayez également de réduire la zone dans laquelle vous obtenez et définissez les pixels. Et, bien sûr, si vous avez déjà les pixels, ne les récupérez pas (en supposant qu'ils n'ont pas changé). En outre, si vous manipulez beaucoup votre matériel, vous pouvez envisager JNI en dernier recours. Vraiment, vraiment dernier recours.

2

Je n'aborderai pas les performances (il peut être utile de faire le rendu dans le thread principal, ou non, selon ce que vous faites). Toutefois, si vous avez besoin de toutes les données tactiles, vous devez utiliser MotionEvent.getHistoricalSize() et les méthodes associées pour récupérer les mouvements intermédiaires qui ont eu lieu depuis le dernier MotionEvent que vous avez traité jusqu'à la position actuelle dans ce MotionEvent.