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

Sara

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 の数や画像サイズの影響も考えて選ぶことをお勧めします。

Subscribe
Notify of
0 Comments
古い順
新しい順 人気順
Inline Feedbacks
View all comments
ABOUT ME
Sara
Sara
運営者
書籍やオンライン講座でプログラミングを勉強してフリーランスのプログラマーになりました。
このサイトでは「わかりやすく・シンプル」をモットーに、プログラミングの基礎からアプリ開発まで紹介します。
独学でプログラミングを勉強をしている方、基礎は勉強したけれど次に何をすれば良いか分からない...という方のお役に立てるサイトを目指しています。
主な使用言語:Java / Kotlin / PHP
>> 詳しいプロフィール
>> お問い合わせ
>> 書籍を出版しました!
本格的に学びたい方へ

Code for Fun プログラミング講座

POINT 01

動くコード

プログラミングの文法を学んでも、そこからどのようにアプリ開発ができるのかイメージが湧きにくいものです。

Code for Fun のプログラミング講座では、ゲームやカレンダーなどアプリとして機能するものを作りながらプログラミングを学ぶことができます。

POINT 02

自分のペースで

オンライン講座なので、ご自身のペースで学習を進めて頂けます。

受講期限もないので、いつでも前のレッスンに戻ることができるので安心です。

お申し込みしたその日からすぐに始めることができます。

POINT 03

個別サポート

プログラミング学習では、エラーが起きることはよくあります。そんな時はお気軽にお問い合わせください!

コメント欄またはメールによるサポートを回数無制限でご利用頂けます。(*講座に関連するご質問のみ対応)

今すぐ無料でお試し

0
この記事にコメントするx
記事URLをコピーしました