アクティビティに画像を配置
SD カードにある画像を
アクティビティに配置しようとして苦労した・・・。
普段 ImageView に画像をセットする場合
imageView.setImageResource(R.drawable.hoge);[/android] これでいける。
※ drawable-xxx というフォルダ名称は、
Android OS のヴァージョン(API Level)によってルールがある。
詳しくは、ディレクトリ構成 。
元々、画像の配置方法は以下の2種類らしい。
- リソースファイルを ID にて指定
- ビットマップを指定
上の例は1番目の手法なわけだが
これすら画像の保存場所によっては
他にも方法がある。
詳しくは、ディレクトリ構成 。
ところが、SD カードの画像を配置しようとすると2番目の方法しかないようで
それには FileInputStream というクラスを利用する。
FileInputStream & FileOutputStream
色々試した結果、以下のスクリプトで成功した。
[android]
// ImageView のインスタンスを生成
ImageView imgView = (ImageView) findViewById(R.id.imgView);
// File のインスタンスを生成
final File fileImage = new File(Environment.getExternalStorageDirectory().getPath(), “hoge.jpg”);
// FileInputStream のインスタンスを生成
FileInputStream fisImage = new FileInputStream(fileImage);
// Bitmap のインスタンスを生成
Bitmap bmpImage = BitmapFactory.decodeStream(fisImage);
// ImageView に画像を設定
imgView.setImageBitmap(bmpImage);[/android]
尚、5行目について
[android]// getPath メソッドがあってもなくてもOK
final File fileImage = new File(Environment.getExternalStorageDirectory().getPath(), “hoge.jpg”);
final File fileImage = new File(Environment.getExternalStorageDirectory(), “hoge.jpg”);
// sdcard/ フォルダに勝手なフォルダを配置し
// その中に画像ファイルを置いてもOK
// フォルダ名に大文字を用いてもOK
final File fileImage = new File(Environment.getExternalStorageDirectory().getPath(), “hoge.jpg”);
final File fileImage = new File(Environment.getExternalStorageDirectory().getPath(), “folderSample/hoge.jpg”);[/android]
参考元サイト:yamaTum 画像の保存→表示 – TAKのAndroid開発日記