触摸事件时的图像操作效率低下!

发布于 2024-09-29 20:01:25 字数 288 浏览 7 评论 0原文

我有两个图像重叠,并且在 ACTION_MOVE 时将像素从底部图像复制到顶部图像。我的目标是给用户带来擦除的感觉,但有时它不会复制(擦除)某些部分,并且如果触摸事件很快(快速拖动手指),情况会变得更糟。

这是我用来复制像素的代码

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

I have two images overlayed and i copy pixels from bottom image to top image while ACTION_MOVE. My goal is to give erasing feeling to the user but sometimes it doesn't copy(erase) some parts and it gets worse if touch event is fast( dragging finger fastly).

This is the code i am using for copying pixels

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我为君王 2024-10-06 20:01:25

我不会讨论性能(在主线程中进行渲染可能没问题,也可能不会,具体取决于您在做什么)。但是,如果您需要获取所有触摸数据,您应该使用 MotionEvent.getHistoricalSize() 和相关方法来检索从您处理的最后一个 MotionEvent 到此 MotionEvent 中的当前位置发生的任何中间移动。

I won't address performance (it may be fine to do the rendering in the main thread, or may not, depending on what you are doing). However if you need to get all touch data you should use MotionEvent.getHistoricalSize() and related methods to retrieve any intermediate movements that have happened from the last MotionEvent you processed to the current position in this MotionEvent.

原野 2024-10-06 20:01:25

将所有触摸事件存储在队列中,并在第二个线程中进行图像操作。永远不要在主线程中做任何昂贵的事情!

另外,请尝试最小化获取和设置像素的区域。当然,如果您已经获得了像素,请不要再次获得它们(假设它们没有改变)。

另外,如果您在操作中进行了大量繁重的工作,您可能需要考虑将 JNI 作为最后的手段。真的,真的是最后的手段。

Store all the touch events in a queue and do the image manipulation in a second thread. Never do anything expensive in the main thread!

Also, try to minimize the area in which you get and set pixels. And, of course, if you already got the pixels, don't get them again (assuming they didn't change).

Also, if you do a lot of heavy lifting in your manipulation, you might want to consider JNI as a last resort. Really, really last resort.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文