在画布上绘制PNG图像:性能问题

时间:2012-09-16 09:20:08

标签: android performance png android-canvas

有没有其他方法可以在画布上绘制.png图像而不是BitmapFactory.decodeResource()?我的问题是,当您从10kB图像创建位图时,仍然会根据屏幕宽度和高度获得一个位图大小。我需要一次在屏幕上显示多达16个图像,并且在高分辨率屏幕上(fe,1280 x 720)它需要大量内存,而且即使在我的HTC One X上也有滞后(当我尝试时,fe ,移动或缩放图像)。 那么有没有其他方法可以在画布上显示.png图像,或者可能还有其他一些解决方案来提高性能?

2 个答案:

答案 0 :(得分:2)

您可以通过多种方式改善绩效:

  • Android使用Blit blit(脏rects)技术与视图,所以如果你的屏幕有几个png图像,尝试在视图中拆分它们并确保它们没有相互接触,那么你将得到脏的rect绩效奖金。
  • 如果您有多个视图,那么您可以使用缓冲区位图在那里绘制它们,当需要更新时,只需绘制缓冲区。当您对缓冲区进行少量更新时,这非常有用。
  • 对于Android 2.2及以下版本,您可以使用Paint.setFilterBitmap()来假,以避免过滤缩放图像,这会对性能产生巨大影响,缩放图像看起来有多糟糕。当硬件加速打开时(默认来自android 4.0),此标志设置为true,您无法更改它。
  • 剪切图像:您可以将图像分割成多个部分,以减少png图像的大小,并将其余部分用于jpg。

答案 1 :(得分:0)

棘手的解决方法:

您可以尝试创建一个屏幕大小的位图。

使用Canvas在该位图上绘制16位图。

显示大型Bitmap而不是16个小型Bitmap。

相关问题