gpt4 book ai didi

android - imageView.setImageBitmap(Bitmap) 极度减慢我的应用程序

转载 作者:太空狗 更新时间:2023-10-29 12:52:44 29 4
gpt4 key购买 nike

我写了一个小应用程序,它应该显示一个转速表,获取它关于转速的数据......通过蓝牙。当数据发生变化时,我会旋转针和其他一些 imageViews 以在屏幕上显示当前值。

旋转代码:

bMapRpm=bMapcanvasBackTacho.copy(bMapcanvasBackTacho.getConfig(), true);
canvasRpm.setBitmap(bMapRpm);
canvasRpm.save();
canvasRpm.rotate((float)Rpmdegree+(float)Rpmcurrentdegree,bMapRpm.getWidth()/2,bMapRpm.getHeight()/2);
canvasRpm.drawBitmap(bMapNadel,0,0,paint);
canvasRpm.restore();

bMapcanvasBackTacho 只是一个透明的背景。bMapNadel 是针的位图。bMapRpm 是 Canvas 的位图

更新 imageView 我总是调用:

ivNadel.setImageBitmap(bMapRpm);

我通过注释部分代码来尝试减慢应用程序的速度。在对 setImageBitmap() 进行评论后,减速消失了。

有人知道如何以其他方式更新 imageView 或者我可以更改哪些内容以使其更快地工作?

谢谢 =)

最佳答案

你可以做两件事:
首先,不要在每次需要更新 Bitmap 时调用 copy() 这会创建一个新的 Bitmap 并且既耗时又耗内存.
其次,在 ImageView 上调用 invalidate()。这将通知 View 某些内容已更改,并且它会自行重绘,而无需更新完全替换位图时发生的任何其他事情。

最后,您甚至可能想要创建自己的 View 实现,这样您就可以覆盖 onDraw() 并在那里执行旋转。

关于android - imageView.setImageBitmap(Bitmap) 极度减慢我的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10328922/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com