リファレンス・カスタマイズ

【Android Studio】ImageViewの画像を動的に変更する3つの方法

 

ImageView の画像を MainActivity.java などから動的に変更するには3つのメソッド

  1. setImageResource
  2. setImageDrawable
  3. setImageBitmap

を使うことができます。

この記事ではそれぞれのメソッドの使い方を紹介します。
 


 

開発環境

Android Studio4.1.1
Android EmulatorNexus 4 (API 30)
minSdkVersion16
targetSdkVersion30

 
 

画像について

drawable フォルダに sample.png という画像を置いています。


 
 

レイアウトについて

activity_main.xml に以下のように ImageView を用意しています。

<ImageView
    android:id="@+id/myImage"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@android:drawable/sym_def_app_icon" />

 
 

仮の画像として、アイコン画像を表示させています。このアイコン画像を MainActivity.java から sample.png に変更します。


 
 
 

画像を変更する方法

方法 ① setImageResource

ImageView myImage= findViewById(R.id.myImage);
myImage.setImageResource(R.drawable.sample);

 

画像のリソース ID(R.drawable.sample)をセットするだけで画像を変更することができます。
 
 

方法 ② setImageDrawable

ImageView myImage= findViewById(R.id.myImage);
Drawable myDrawable = getResources().getDrawable(R.drawable.sample);
myImage.setImageDrawable(myDrawable);

 

画像のリソース ID から Drawable オブジェクトを作成して、setImageDrawable メソッドに渡します。
 
 

方法 ③ setImageBitmap

ImageView myImage= findViewById(R.id.myImage);
Bitmap myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.sample);
myImage.setImageBitmap(myBitmap);

 

BitmapFactory クラスの decodeResource メソッドで Bitmap オブジェクトを作成して、setImageBitmap メソッドに渡します。
 
 
 

どの方法を使えば良いか

方法① setImageResource メソッドは画像を表示するまでに少し遅れが出る可能性があるため、setImageDrawable か setImageBitmap を使うことが提案されています。


 

基本的には一番簡単に使える setImageResource メソッドで良いと思いますが、ImageView の数や画像サイズの影響も考えて選ぶことをお勧めします。
 
 

ABOUT ME
Sara
「わかりやすく・シンプル」をモットーに、スマホアプリ・ウェブアプリの作り方を紹介します。 独学でプログラミングを勉強をしている方、基礎は勉強したけれど次に何をすれば良いか分からない...という方のお役に立てるサイトを目指しています🙂
guest
0 Comments
Inline Feedbacks
View all comments
0
この記事にコメントするx