目次へ
|
■リソースIDからImageViewにイメージを表示する
layoutのxmlで指定するなら、次のようにします。@drawable/ic_launcherはres-drawableの中にic_launcher.pngなどがあったら、その拡張子を除いたものです。
<ImageView android:id="@+id/gazou" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" /> |
プログラムの中でリソースに登録された画像をセットするなら次のようになります。
ImageView v = (ImageView)findViewById(R.id.gazou); v.setImageResource(R.drawable.ic_launcher); |
■リソースIDで指定した画像をBitmapオブジェクトに変換する
Resources r = getResources(); Bitmap bmp = BitmapFactory.decodeResource(r, R.drawable.ic_launcher); |
■Bitmapオブジェクトをbyte配列に変換する
SqLiteに保存するときなどbyte配列に変換する必要があります。上で作成したBitmapオブジェクトをbyte配列に変換するのが下のプログラムです。
compressメソッドの第2引数はcompressorへのヒント用に0-100の値を入れ、0は画像サイズが小さいことを示し、100は大きいことを示します。
ただ、pngなどの形式ではこの値は無視されると書いてありますので、まあ、適当な値を入れておけばよいのでしょう。
また、第1引数は、画像の形式がPNGであることを示します。JPEGなら、CompressFormat.JPEGとなります。
ByteArrayOutputStream baos = new ByteArrayOutputStream(); bmp.compress(CompressFormat.PNG, 100, baos); byte[] bytes = baos.toByteArray(); |
■byte配列をBitmapオブジェクトに変換する
今度は逆にbyte配列をBitmapオブジェクトに変換します。SqLiteに保存されていた画像を表示する時などに必要です。
decodeByteArrayの第2引数はオフセット(bytes配列のどこからか)を示します。
第3引数はオフセットから数えて何バイトを変換するかを示します。
Bitmap bmp = null; byte[] bytes = xxx; //ここに画像データが入っているものとする if (bytes != null) { bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); } |
■BitmapオブジェクトをImageViewに表示する
上で作成したBitmapオブジェクトをImageViewに表示するには次のようにします。
ImageView v = (ImageView)findViewById(R.id.gazou); v.setImageBitmap(bmp); |
■ImageViewの画像を消す
これでよいのかどうかわかりませんが、これを実行するとエラーにもならず、画像は消えます
ImageView v = (ImageView)findViewById(R.id.gazou); v.setImageBitmap(null); |
にほんブログ村
Good!!!!!めっちゃわかりやす
返信削除