はじめに
前回 の続きです.
前回は, メッセージウィンドウまで作りました.
5. メニュー
次はメニューを作っていきます.
メッセージの右下に, 重ねて表示させてみます.
5.1. メニューの枠を作る
LinearLayoutを使ってレイアウトしていきます.
GridLayout とか使えば多少ネストが浅くなる気がしますが, レイアウトの練習ということでここは一つ.
一番内側のLinearLayoutには ImageView と TextView を入れます.
追記:
外側に LinearLayout を追加して, 黒い枠を作っています.
5.1.1. 外側の黒い枠になる部分(LinearLayout)を入れる
- before
- after
次の値を設定します.
| attribute | value |
|---|---|
| layout_width | 200dp |
| layout_height | match_parent |
| layout_gravity | right |
| background | #363f3a |
| padding | 4dp |
| visibility | visible |
padding は #363f3a の部分を枠のように使うために, 「内側に隙間を作る」ための値です.
width を 200dp にしたのは, なんとなくそれっぽくなったからです
適当
5.1.1.1 android:visibility
android:visibility に visible を設定してますが, これは, あとあと「メニューを消したり, 逆に表示したり」できるようにするためです.
setVisibility というメソッドで操作されている様子の確認をあとで行います.
5.1.2. 内側の枠(LinearLayout)を入れる
5.1.2.1. 背景素材(drawable/pokemon_battle_menu_frame.xml) を作る
pokemon_battle_menu_frame.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#f9f8fe" />
<corners android:radius="8dp" />
<stroke
android:width="6dp"
android:color="#716b8f" />
</shape>
下のような感じになっていれば, メニューの枠として使えます.
5.1.2.2. 枠を入れる
これでメニューの枠が完成しました.
書き加えた部分は次の通りです.
pokemon_gba_battle.xml
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/pokemon_battle_menu_frame"
android:orientation="horizontal"
android:paddingBottom="12dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="12dp">
<!--here next-->
</LinearLayout>
次は選択肢とカーソルを並べていきます.
5.2. 選択肢とカーソルを作る
選択肢は次の4つ
- たたかう
- バッグ
- ポケモン
- にげる
これに material icon: ic_play_arrow で作ったカーソルを隣に並べます.
5.2.1. 縦に並べる LinearLayout を入れる
幅 (width) は 0dp で, layout_weight は 1 を入れます.
android:orientation="vertical" を忘れずに入れておきます.
5.2.2. 選択肢とカーソルのための LinearLayout を入れる
ImageView と TextView を横向きに,
四箇所 に並べます.
これで, ImageView(カーソル) と TextView (選択肢) を受け入れる準備ができました.
5.2.3. 選択肢とカーソルを入れる
5.2.3.1. カーソル素材の準備をする
drawable で使える vector が使えるようになったのでそちらを使用します.
新しく ic_play_arrow.xml というファイルを作成して,
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M8,5v14l11,-7z"/>
</vector>
をコピーして貼り付けてください.
たーのしー
参考:
5.2.3.2. 選択肢とカーソルを配置する
ImageView と TextView をワンセットで, 4組セットしていきます.
- ImageView (カーソル)
| Header One | Header Two |
|---|---|
| layout_width | 0dp |
| layout_height | wrap_content |
| layout_weight | 1 |
| src | @drawable/ic_play_arrow |
- TextView (選択肢)
| Header One | Header Two |
|---|---|
| layout_width | 0dp |
| layout_height | wrap_content |
| layout_weight | 5 |
| gravity | center_vertical |
| text | (例)たたかう |
それっぽくするために, gravity には center_vertical を設定しました.
5.2.3.2.1. gravity
レイアウトの中に対して, どの方向に寄せるかを設定できます.
今回 TextView に center_vertical を設定しているので,
中身である文字 (text の値) が, 「縦方向にみたときに真ん中になる」ような gravity が設定されています.
5.2.3.3. visibility を設定する
今, メニューは下のような状態になっていると思います.
カーソルは「選択状態にあるカーソルのみ表示」されるようにしなければいけないので,
見えている状態 (visible) / 見えない状態 (invisible) という値を ImageView に追加します.
- ImageView (カーソル)
| Header One | Header Two |
|---|---|
| layout_width | 0dp |
| layout_height | wrap_content |
| layout_weight | 1 |
| src | @drawable/ic_play_arrow |
| visibility | visible (or invisible) |
たたかう には見えている状態 (visible) を設定して,
それ以外の3つ ( ポケモン バッグ にげる ) には, 見えない状態 (invisible) を設定します.
5.3. メニュー完成
それっぽい感じになりました.
5.3.1. メニューを消してみる
一番最初, 5.1.1. で, LinearLayout(horizontal) に android:visibility="visible" を設定したのを覚えているでしょうか.
これを invisible / visible とすることで, メニューを表示したり, 消したりできます.
おわりに
続きます
coming soon
















