[Android]resフォルダに入れた複数の画像をxmlファイルで配列管理する方法(TypedArrayの使い方)

resフォルダに格納した複数の画像を、ソースコード内ではなくxmlファイル内で配列管理して、それをソースコードで使えるようにする方法です。

 

1.任意のxmlファイルに配列管理したい画像の整数配列(integer-array)を設定する

動画の解説内では、「strings.xml」に設定していますが、<resources>タグで括ってさえいれば、どのxmlファイルに記述しても問題ないそうです(引用参照)。

<resources>
    <integer-array name="background_list">
        <item>@drawable/back001</item>
        <item>@drawable/back002</item>
        <item>@drawable/back003</item>
       
       
        <item>@drawable/back098</item>
        <item>@drawable/back099</item>
        <item>@drawable/back100</item>
    </integer-array>

</resources>

 A typed array is a simple resource that is referenced using the value provided in the name attribute (not the name of the XML file). As such, you can combine typed array resources with other simple resources in the one XML file, under one <resources> element.

 

2.1で設定した配列をソースコードで使う

たとえば、こんな感じで

val backGroundArray = resources.obtainTypedArray(R.array.background_list) :①
val backGroundRes = backGroundArray.getResourceId(0, -1) :② 第一引数が配列のインデックス
constraintLayout.setBackgroundResource(backGroundRes)   :③
backGroundArray.recycle() ← 最後はTypedArray#recycle()を使わないといけないらしい :④
  1. Resources#obrainTypedArray()で、xmlで設定した配列を取得
  2. Resources#getResourcesId(配列のインデックス, デフォルト値)で、配列内で使いたい画像のリソースIDを取得
  3. 画面の背景に②で取得したリソースIDの画像を表示
  4. TypedArray#recycle()で、①で取得した配列のリサイクル

(詳しくは下の動画で解説していますので、よろしければご覧ください)

blank

こんな記事も読まれています

今すぐプレゼントを受け取る(約6時間のFlutter初級編体験版動画講座を無料でプレゼント)
blank

はじめての方へ

blank
みんプロ式プログラミング講座体系・ラインナップ
みんプロ式プログラミング講座受講の流れ(割引特典利用方法)
サイトマップ(みんプロHPコンテンツ一覧)
運営会社概要

おすすめコンテンツ

プログラミングを学ぶとどんないいことがあるのか
みんプロ式を選んでいただける6つの理由
ぼくの人生挫折ヒストリー(代表者プロフィール)
ぼくのプログラミング挫折ヒストリー(無料メール講座・6大特典付き)
今最も注目のアプリ開発ツール「Flutter(フラッター)」ミニ動画講座

みんプロ式動画講座(コア・Flutter)

ゼロからのFlutter(初級編)-はじめてのプログラミングからアプリリリースまで-
Flutter中級編1-Web通信・設計・状態管理・DIの基礎-
Flutter中級編2-Firebase/地図・カメラ連携等の基礎-
Flutter中級編3-広告/アプリ内課金等の基礎-
Flutter中級編4-Webアプリとレスポンシブデザインの基礎-

みんプロ式動画講座(サテライト)

Flutter/Dartトラブルシューティング・小ネタ集(コア初級編受講で無料プレゼント)
ゼロからのGit・GitHub(コマンドラインツールを極力使わないバージョン管理入門)
Flutter/Dartにおける設計・状態管理・DIの解説集
Dart逆引き大辞典
Flutterにおけるテストの基礎
blank
blank

みんプロ式対面講座(Zoom)

反転授業型3ヶ月集中グループコース(対面講座)
アプリ作成サポート型マンツーマンコース(対面講座)

みんプロ作成アプリ

blank
blank
blank
blank

TOP