2011年3月10日木曜日

Android Web上の画像表示

とりあえず作ったAndroidアプリでつまずいたり調べたりしたことのまとめ1。

HTMLだとimgタグのsrcにその画像のパスを書いてやればブラウザであとは勝手にやってくれる。Androidでもそんな感じでWeb上の画像の表示をできると思っていたが、そんなでもなかった。

これは、調べればすぐ分かるが、ソース内で画像の中身を読んでDrawableオブジェクトをcreateFromStreamしてやる。ImageViewにはそのDrawableオブジェクトをsetしてやる。
mImage = (ImageView) view.findViewById(R.id.item_img);

String image = item.getSmallImage().toString();  // これはItemクラスのgetter。単に画像のURL。
InputStream is = (InputStream) new URL(image).getContent();
Drawable d = Drawable.createFromStream(is, "");
is.close();
mImage.setImageDrawable(d);
URLのnewでMalformedURLExceptionをgetContentでIOExceptionを投げるので、try catchもしておく。

ImageViewは至ってシンプル。
<ImageView android:id="@+id/item_img"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content" />