【问题标题】:Android Drawing Performance - canvas.drawRect vs Bitmap DrawingAndroid 绘图性能 - canvas.drawRect 与位图绘图
【发布时间】:2012-07-07 00:36:14
【问题描述】:

我正在编写一个基于粒子的游戏,主要是通过绘制许多彩色形状来构建的。

问题 1)

对于大多数敌方单位,我通过设置颜料绘制 4 个分层矩形,然后通过画布绘制矩形。

我想知道使用位图绘制更好还是使用画布绘图工具绘制更好?我可以轻松地制作我想要绘制的敌方单位的单一图像。

问题 2)

对于必须在屏幕上绘制的图像,我想知道如何加载它们?

现在我有大量这样加载的 .png 图片:

direction1 = BitmapFactory.decodeStream(assetMgr.open("direction1.png"));

我读到 RGB565 是在屏幕上绘制的禁食图像类型。 Microsoft Paint 有一些保存选项,但大多数程序只保存为位图,而不是一种位图。如果我要开始使用这种新格式,我会:

  1. 制作新图片并使用相同的加载代码。
  2. 使用相同的图像并添加类似Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565); 的内容到 从初始加载的格式转换为 RGB565 格式。
  3. 制作新图片并更改我的加载代码。

感谢您的帮助!非常感谢。

【问题讨论】:

    标签: java android performance drawing android-canvas


    【解决方案1】:
    1. 无。使用 OpenGL 总是更好,唯一的缺点是 它需要更多的电池能量,因为它是硬件 加速。

    2. RGB565 表示图像使用 16 位 您应该寻找的选项。不要转换任何东西,只需创建它们 以您将使用的格式。

    【讨论】:

    • 在设计过程中更改为 OpenGL 为时已晚。这就是我问的原因。我需要挤出更多的性能,这样我才能发布它。
    • @NathanTornquist,我想这在很大程度上取决于你的图像大小和你用来绘制你的人的画布方法的数量。你如何实现两者,去 DDMS 并使用“开始方法分析”/“停止”来使用分析?这样,您将看到 CPU 占用的确切百分比。
    【解决方案2】:

    如果位图没有逐帧移动,您应该尝试减少 invalidate() 方法调用。只有在进行更改并更新时才应重新绘制画布。

    【讨论】:

      猜你喜欢
      • 2015-09-12
      • 1970-01-01
      • 2013-07-18
      • 1970-01-01
      • 2012-05-22
      • 1970-01-01
      • 1970-01-01
      • 2011-03-30
      • 1970-01-01
      相关资源
      最近更新 更多