Android入門【第5回:SDカードから画像を読み込む】(ついでにGridViewで表示)

By wachi
このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

さて、前回は画像を切り替えられるようにしました。
バス停車アプリが謎な方向に舵を切った瞬間です。

それはさておき、切り替えられるようになったとはいえ事前に用意した画像のみしか選択できません。
そこで今回は、カメラで撮影した画像を選択できるようにしてみます。
ついでに、GridViewを使って表示します。

カメラで撮影された画像はSDカード内に入っている事から、SDカードから画像データを読み込まねばなりません。
まずは仮想SDカードを作成するところから始めます。
コマンドラインで色々出来るようだけども、eclipseを使う前提で以下の流れで。

1.エミュレータ作成時にSDカードの容量を指定する

「Android SDK and AVD Manager」を選択
AVD manager

「新規」で。(日本語化してます)
AVD manager2

SD Cardの容量を入力し、ハードウェアでSD Card Supportを選択します。
AVD manager3

とりあえず前準備完了。

2.画像を投入する

これも簡単。
新規作成したAVDを起動し、DDMSに切り替えて・・
DDMS

放り込みたいファイルを「sdcard」にドラッグ&ドロップするだけ。
DDMS2

投入完了です。
DDMS3

Eclipse便利だな・・・

3.アプリから読み出す

やっつけなコードで申し訳ないです。
例外処理は一切していませんので、実際に使用する場合は気をつけて下さい。
一応、下層のフォルダの中身も検索し、末尾がjpgかJPGのファイル名を取得します。

4.画像を表示する(GridView)

前回に引き続き、API Demosのサンプルを参考に。

http://d.android.com/guide/samples/ApiDemos/src/com/example/android/apis/view/Grid2.html

下記のソースは数箇所変更されています。

onCreate時にSDカード内のjpegのパスとファイル名をListに突っ込みます。
参考元のソースでは画像のリソースIDをint配列に入れていましたが、それをListに置き換えています。

取得した画像(今回はjpegのみ)を表示するのみですが、ビットマップに変換する際にOutOfMemoryが発生したので、変換前に画像を小さくしています。
(84行目あたり。これまたやっつけ臭いですが・・)

あと、レイアウト用のXML。
/res/layout/main.xml

view

さて、画像は表示できたので、いよいよ画像を切り替えたいところですが、

今回はここまで!
SDカードからの読み込み&表示に思いのほか時間を要してしまったので・・

関連する投稿