[Android] ImageView 画像を表示させる3つの方法

Android7 

アプリで画像を表示させるにはImageViewを使います。画像表示設定には色々方法がありますが、下のような代表的な3つの設定方法について試してみたいと思います。
 

長澤愛紗_001
レイアウトに直接
長澤愛紗_002
drawableから読込
長澤愛紗_003
assetsから取込

Android Studio 2.2.2 
Android 7.1.1 
sponsored link

ImageView

 

  1. レイアウトに直接埋め込むケース
  2. drawable にある画像を読み込む
  3. assetsに画像を置いてそれを取り込む
 

1. レイアウトに直接埋め込むケース

 
これは、最初からレイアウトに書き込んでしまうものです。簡単ですが、動的に変更できません、画像はdrawableにコピー&ペーストします。画像は aisha_1.jpg, aisha_2.jpg をdrawableに入れます。aisha_3.jpg はassetsフォルダを作ってを入れました。
 
スクリーンショット 2016-04-26 16.23.09
フォルダに直接入れることもできます。
..¥app¥src¥main¥res¥drawable¥aisha_1.jpg
 
レイアウトファイル activity_main.xml には以下のように記述します。
(jpg, pngの拡張子はいりません)
 

 
これでdrawableにある画像aisha_1をsourceとして定義しています。
またscaleTypeはfitCenterを使うと画面に合うように拡大縮小してくれます。
 
activity_main.xml

 
この場合は、MainActivity.java に記述は必要ありません。
 
imageview_001
 

 

2. drawable にある画像を読み込む

 
画像は同じく drawableにあるとして、IDコードで画像を呼びだし setImageResource(ID) で表示します。
 

 
レイアウトは、MainActivityで呼ばれるIDに対応させます

android:id=”@+id/image_view_1″
 

 

まとめるとこうなります
MainActivity.java

 
activity_main.xml

 
imageview_002
 

 

3. assets に画像を置きそれを取り込む場合

 
assets folder を作ります

「app」右クリック「New」「Folder」「Assets Folder」

imageview_02

そのまま「Finish」

imageview_03
できた assets に画像 aisha_3.jpg をコピー&ペーストします
 
assets からはファイルの読み出しは
 

 
で取り込みます。
 

 
レイアウトは、指定されたIDを使います
 

 
まとめると

MainActivity.java

 
activity_main.xml

 
imageview_003
 

 

drawable VS assets
さて、なぜdrawableだけでなくassetsを使うかというと、drawableにおける画像サイズには端末のヒープメモリによる限界があり、結果的に大きなサイズの画像は置けません。サイズは横x縦なので圧縮は関係ありません、なぜならbitmap変換するところがネックなので。メモリのリミットは端末依存なのでこれで大丈夫とは言い切れないのも困ったことで、Android2.x系までカバーする場合は512x512pix程度に抑えた方がいいという噂はあります。

assetsからの取り込みの場合はBitmapFactoryを使って画像をダウンサンプリリングすることができるためdrawableよりは大きいファイルを取り込めます。ただし、メモリに限界はありますのでなんでもOKではありません。

また、アイコン画像などを100個以上使うようなケースでassetsではフォルダ分けができます。drawableではベタで放り込むしかありません。

更に、この方法ではassetsには最初から画像を置いて読み出しはできますが、書き込みはできません。ネットから画像を取り込む、ギャラリーから画像を取り込んだ場合などでそれらを保存したい場合は、この後に内部メモリー領域にファイルとして保存することとなります。
 

関連:

モデルは長澤愛紗ちゃん
美人 SNAP