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

 

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

 
ImageViewで表示する画像がassetsに入っているケースです。
画像をassetsに入れたいのですがデフォルトでは無いので作ります。
 
imageview a01b - [Android] ImageView 画像を表示させる3つの方法
 
下の動画のように、assets folder を作ってから入れます。
 

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

imageview 02 300x226 - [Android] ImageView 画像を表示させる3つの方法

そのまま「Finish」

imageview 03 300x277 - [Android] ImageView 画像を表示させる3つの方法
できた assets に画像 img_3.jpg をコピー&ペーストします。
プロジェクトの階層内に入り、フォルダに直接入れることもできます。
..¥app¥src¥main¥assets¥img_3.jpg
 
assets からはファイルの読み出しはtry catchを使って例外処理をするようにします。
これは例外が発生した場合でもアプリが回復できる余地を作ることになります。
また、リソース開放漏れが無いようにfinalyでclose()を入れるか、try-with-resourcesを使います。  

 
これで画像を取り込む記述は InputStream とAssetsManagerを使って このようにします。
 

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

 
まとめると

MainActivity.java

 
activity_main3.xml

 
strings.xml

 
画像が表示されたでしょうか
 
imageview b04d - [Android] ImageView 画像を表示させる3つの方法

 

drawable VS assets

 
なぜdrawableだけでなくassetsを使うかというと、

  • アイコン画像などを100個以上使うようなケースでassetsではフォルダ分けができます。drawableではベタで放り込むしかありません。
  • assetsからの取り込みの場合はBitmapFactoryを使って画像をダウンサンプリリングすることができるためdrawableよりは比較的大きいファイルを取り込めます。

画像サイズというのはファイルサイズではなく、画像の横 x 縦のサイズになります。なぜならbitmap変換するところがネックなので。

メモリのリミットはAndroidの場合、端末依存なのでこれで大丈夫とは言い切れないのも困ったことで、Android2.x系までカバーする場合は512x512pix程度に抑えた方がいいという時代もありました。

今は端末のパフォーマンスも高いのである程度できますが、それでも何も考えずカメラで撮った画像を張り付けるとエラーになることがあります。
大きいサイズの画像取り込みに関しては、後述のライブラリーPicassoを使うことである程度可能です。

 

Picasso ライブラリー

 
今さらではありますが、Picasso – Square Open Source というライブラリーがあります。これを使うと例えば5760×3760サイズの画像も表示することができます。Picasso 大きい画像を扱ってみる
 
picasso 01 - [Android] ImageView 画像を表示させる3つの方法

5760×3760の画像

 

関連:

References:
ImageView | Android Developers
Picasso – Square Open Source

誤字脱字、意味不明で分からにゃイ、
などのご意見はこちらから mailフォーム

ブックマークしておくと便利です このエントリーをはてなブックマークに追加

アプリ開発が上達するお勧め

アプリ開発を始めたけどわからないところがあり、誰かに聞きたいけど周りにはそんな人はいない…あるいは、会社で働いていて日中そんなに時間をとれないなど、オンラインのプログラミングスクールがいいでしょう。

オンラインスクールは色々ありますが、以下の3つはAndroidが学習できる老舗スクールです。


TECH ACADEMY
Androidアプリコース


こういうものではアプリ作れないと言う意見もありますが、それは結局本人のやる気があるかないかです。やる気があっても独学では突破しにくいところは教えてもらうのが一番早い。


侍エンジニア塾
侍エンジニア塾 無料体験レッスン


とても簡単なことなのに本やネットの画像だけでは分かりにくいことはあります。実際に質問してピンポイントで教えてもらうと、なんだそんなこと、と言うのがけっこうあります。


CodeCamp
~約8,000名の受講生と80社以上の導入実績~
現役エンジニアのオンライン家庭教師CodeCamp




直接(ネットで)誰か分かる人に聞いた方が早く解決して、上達も早いと思います。




シェアする

  • このエントリーをはてなブックマークに追加

フォローする