1

BitmapFactory.decodeResource() 以外にキャンバスに .png 画像を描画する方法はありますか? 私の問題は、10kB の画像からビットマップを作成すると、画面の幅と高さに応じてビットマップのサイズが変わらないことです。画面に一度に最大 16 枚の画像を表示する必要があり、高解像度の画面 (fe、1280 x 720) では大量のメモリが必要で、HTC One X でもラグが発生します (試してみると、fe 、画像を移動またはスケーリングします)。キャンバスに .png 画像を表示する他の方法、またはパフォーマンスを向上させる他のソリューションはありますか?

4

2 に答える 2

2

いくつかの方法でパフォーマンスを向上させることができます。

  • AndroidはビューでBlitblit(dirty rects)テクニックを使用しているため、画面に複数のpng画像がある場合は、それらをビューに分割して、互いに接触していないことを確認してください。そうすると、dirtyrectのパフォーマンスボーナスが得られます。
  • 複数のビューが互いに重なり合っている場合は、バッファービットマップを使用してそれらを描画できます。更新が必要な場合は、バッファーを描画するだけです。これは、バッファの更新がほとんどない場合に非常に便利です。
  • Androidバージョン2.2以下では、Paint.setFilterBitmap()をfalseに使用して、拡大縮小された画像のフィルタリングを回避できます。これは、拡大縮小された画像の見栄えが悪くても、パフォーマンスに大きな影響を及ぼします。また、ハードウェアアクセラレーションがオンになっている場合(Android 4.0からのデフォルト)、このフラグはtrueに設定されており、変更することはできません。
  • 画像の切り取り:画像をいくつかの部分に分割して、png画像のサイズを縮小し、残りをjpgにすることができます。
于 2012-09-16T10:12:04.950 に答える
0

トリッキーな回避策:

画面のサイズでビットマップを作成してみることができます。

Canvas を使用して、そのビットマップに 16 個のビットマップを描画します。

16 個の小さなビットマップではなく、大きなビットマップを表示します。

于 2014-12-04T16:12:29.813 に答える