[android]画像を被せてImageViewに表示する

2つの画像を被せた画像を1つのImageViewに表示します。
XML側でImageViewを1つだけ設定し、画像の設定はコード上で行います。

LayerDrawableを使用すれば、配列で指定した画像を被せてImageViewに表示することができるようです。

 

やりたいこと

・背景画像を画面サイズ横幅いっぱい表示してその中にアイコン画像を表示したいです。
・xmlでレイアウトを作らずコード上で画像のレイアウト作りたいです。
・画像は下記の素材を使いたいです↓
アヒルとアスファルト
 

実装の手順

①画像を表示するビュー(imageView)と背景画像の(bgImage)、アイコン画像の(iconImage)を取得します。
→画像は適当にフリー素材のアスファルト画像(1000×1000)とあひる画像(100×100)を使用します。
②画面の縦横のサイズを取得します。
③取得した画面サイズを元に背景画像を横いっぱいにリサイズします。
④画像をかぶせてLayerDrawableを生成します。
→drawablesの画像は配列を指定した順番で重なるようです。
→背景画像を下でアイコン画像をその上に指定したいので、bgImage,iconImageの順に配列に設定します。
⑤アイコン画像にpaddingを与えてみたりする。
→setLayerInsetを使用し、アイコン画像の設定されている配列のindex1に対してpadding=30を与えてみます。
⑥画像をImageViewにセットします。

 

ソース

使ってみました

背景画像が横幅いっぱいでその中にアヒルのアイコンが右に表示されています。
微妙にpaddingが効いているようです。

画像を被せたアスファルトとあひる

 

参考:
Android APIs
qiita:画像を重ねて表示する



❏❏ TOPIC ❏❏ ------------------------------------------------------------

カスタム自由!フリーECサイトパッケージ
チャットボット導入サービス
WEBシステム開発・スマホアプリ開発はSRIAへ