1

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

4

2 回答 2

2

您可以通过多种方式提高绩效:

  • Android 对视图使用Blit blit(dirty rects)技术,因此如果您的屏幕有多个 png 图像,请尝试将它们拆分到视图中并确保它们没有相互接触,那么您将获得脏 rect 性能奖励。
  • 如果您有多个相互重叠的视图,那么您可以使用缓冲区位图在此处绘制它们,当需要更新时,只需绘制您的缓冲区。当您对缓冲区的更新很少时,这非常有用。
  • 对于 android 2.2 及以下版本,您可以使用Paint.setFilterBitmap()为 false,以避免过滤缩放的图像,这对性能有很大的影响,无论缩放的图像看起来多么糟糕。并且当硬件加速打开时(默认从 android 4.0)这个标志被设置为 true 并且你不能改变它。
  • 剪切图像:您可以将图像拆分为多个部分,以减小 png 图像大小并将其余部分设为 jpg。
于 2012-09-16T10:12:04.950 回答
0

Tricky workaround:

You can try to create a Bitmap with size of the screen.

Draw the 16 Bitmaps on that Bitmap using Canvas.

Display that big Bitmap instead of 16 small ones.

于 2014-12-04T16:12:29.813 回答