読者です 読者をやめる 読者になる 読者になる

hyoromoのブログ

iOS/AndroidもしくはCocos2dxネタを書いています

BitmapFactory.Options の使い方   の説明をちゃんとしたかったな...

Android

画像読込時のOutOfMemory回避のお伴に BitmapFactory.Options が非常に有効です。
本日はそんなAPIで何が設定出来るのか整理してみました。

設定一覧

inDensity

bitmapのpixelを調整するらしいけど、どう使っていいかよく分からない。

inDither

trueの場合、ノイズ加工する。

inInputShareable

inPurgeableがtrueの時のみ有効となります。
trueの場合、bitmapを値渡しする。

inJustDecodeBounds

trueの場合、bitmapの読み込みを行わずステータス情報のみを取得する。
例えば画像サイズなど。

inPreferredConfig

bitmapを読み込む歳のファイルフォーマットを指定できる。
例えばBitmap.Config.ARGB_8888と指定すれば、ARGBでそれぞれ0〜255段階の色が使われる事になる。
Bitmap.Config.ARGB_4444ならば、0〜127まで。
当然値が少なければその分メモリを喰わない。

inPurgeable

trueの場合、システムメモリ上に再利用性の無いオブジェクトがある場合に勝手に解放する。

inSampleSize

デフォルトは1。
2が設定されると画像を1/2サイズに縮小、4を設定すると画像を1/4サイズに縮小。2の倍数毎に有効となる。

inScaled

trueの場合、ピクセル密度に応じて画像をスケールさせるか設定。
inDensityとinTargetDensityに何も設定していなければfalse扱いとなる。

inScreenDensity

アプリケーション内でのピクセル密度を設定する。
設定する事で、システム側で設定されているピクセル密度を無視して設定値を元に画像がスケールされる。
基本的には以下の定数を設定する。

  • DisplayMetrics.DENSITY_LOW(120dpi)
  • DisplayMetrics.DENSITY_MEDIUM(160dpi)
  • DisplayMetrics.DENSITY_HIGH(240dpi)
inTargetDensity

inScreenDensityとの違いが不明。

inTempStorage

デコード時の一時ストレージバイト数。デフォルトは16KBと推奨値となっている。

mCancel

何かがキャンセルされるようだ。

最後に

意味の取り違いをしている箇所は多いと思います。指摘頂けると助かります。
あと、不明点を誰か教えてくれないかな...

追記

指摘箇所は明記もせずに適当に追記してゆく。。。