Android Kotlin基礎講座 01.3: イメージリソースと互換性

タスク:デフォルト画像を使う

現在、サイコロの最初の画像としてdice_1を使っています。しかしサイコロが振られるまでは何も画像を表示したくありません。そうするためにはいくつか方法があります。

  1. activity_layout.xmlをTextで開いてください。
  2. <ImageView>要素の中のandroid:src属性の値を”@drawable/empty_dice”にしてください。
android:src="@drawable/empty_dice" 

empty_diceはダウンロードしてdrawableフォルダーに追加した画像の一つです。これはほかのサイコロの画像と同じサイズの空白の画像です。これがアプリ起動時に表示されるようになります。

  1. Designタブをクリックしてください。サイコロの画像は現在空ですが、プレビューエディタ上でも見ることができません。

デザインのコンテンツが動作時に動的に作られるのはよくあることです。たとえばインターネットからデータを取得してくるようなアプリは空白や何もない画面から始まります。しかしアプリをデザインする際には、レイアウトにプレースホルダーのようなものを置いておくと、そこに何を割り当てているのかがわかりやすくなるので便利です。

  1. activity_layout.xmlで、android:srcの行をコピーしてすぐ下にペーストしてください。
    “android”の部分を”tools”に変更してください。以下のようになります。
android:src="@drawable/empty_dice" 
tools:src="@drawable/empty_dice" />

これでこの属性の名前空間をデフォルトのandroid名前空間からtools名前空間に変更しました。tools名前空間はAndroid Studioのプレビュー画面、またはデザインエディター上でのみ使われるプレースホルダーを定義したいときに使われます。tools名前空間を使っている属性はアプリをコンパイルすると削除されます。

名前空間は同じ名前を持つ属性を使うときに曖昧さを回避するために使われます。例えば<ImageView>タグの中の上記二つの属性は両方とも”src”という名前を持っていますが、名前空間は異なります。

  1. レイアウトファイルのルートである<LinearLayout>を見てください。二つの名前空間がここで定義されています。
<LinearLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   ...
  1. ImageViewタグの中のtools:src属性の値をempty_diceからdice_1に変更してください。
android:src="@drawable/empty_dice" 
tools:src="@drawable/dice_1" />

これでプレビューを見るとプレースホルダー画像としてdice_1の画像が表示されるようになりました。

  1. コンパイルしてアプリを起動してください。実際のアプリではRollボタンを押すまではサイコロ画像は空であることを確認してください。