3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【初心者用】Androidのレイアウトで遊んでみる2

Last updated at Posted at 2017-04-01

はじめに

前回 の続きです.

前回は, メッセージウィンドウまで作りました.

スクリーンショット 2017-03-26 11.13.25.png

5. メニュー

次はメニューを作っていきます.

メッセージの右下に, 重ねて表示させてみます.

↓完成図
battle_scene.png

5.1. メニューの枠を作る

LinearLayoutを使ってレイアウトしていきます.

GridLayout とか使えば多少ネストが浅くなる気がしますが, レイアウトの練習ということでここは一つ.

スクリーンショット 2017-04-01 15.33.25.png

(矢印入り)

一番内側のLinearLayoutには ImageViewTextView を入れます.

追記:
外側に LinearLayout を追加して, 黒い枠を作っています.

5.1.1. 外側の黒い枠になる部分(LinearLayout)を入れる

  • before

スクリーンショット 2017-04-01 15.28.11.png

  • after

スクリーンショット 2017-04-01 15.46.17.png

次の値を設定します.

attribute value
layout_width 200dp
layout_height match_parent
layout_gravity right
background #363f3a
padding 4dp
visibility visible

padding は #363f3a の部分を枠のように使うために, 「内側に隙間を作る」ための値です.

width200dp にしたのは, なんとなくそれっぽくなったからです

適当

5.1.1.1 android:visibility

android:visibilityvisible を設定してますが, これは, あとあと「メニューを消したり, 逆に表示したり」できるようにするためです.

setVisibility というメソッドで操作されている様子の確認をあとで行います.

5.1.2. 内側の枠(LinearLayout)を入れる

5.1.2.1. 背景素材(drawable/pokemon_battle_menu_frame.xml) を作る

ファイルの作成方法(確認用)

スクリーンショット 2017-04-01 16.02.25.png

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>

下のような感じになっていれば, メニューの枠として使えます.

スクリーンショット 2017-04-01 17.23.42.png

5.1.2.2. 枠を入れる

スクリーンショット 2017-04-01 16.09.01.png

これでメニューの枠が完成しました.

書き加えた部分は次の通りです.

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 を入れる

スクリーンショット 2017-04-01 16.19.45.png

幅 (width) は 0dp で, layout_weight1 を入れます.

android:orientation="vertical" を忘れずに入れておきます.

5.2.2. 選択肢とカーソルのための LinearLayout を入れる

ImageViewTextView を横向きに,

四箇所 に並べます.

スクリーンショット 2017-04-01 16.30.53.png

スクリーンショット 2017-04-01 16.33.50.png

スクリーンショット 2017-04-01 16.35.44.png

これで, 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>

をコピーして貼り付けてください.

スクリーンショット 2017-04-01 16.50.12.png

たーのしー

参考:

5.2.3.2. 選択肢とカーソルを配置する

ImageViewTextView をワンセットで, 4組セットしていきます.

スクリーンショット 2017-04-01 16.57.39.png

  • 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

android:gravity

レイアウトの中に対して, どの方向に寄せるかを設定できます.

今回 TextViewcenter_vertical を設定しているので,

中身である文字 (text の値) が, 「縦方向にみたときに真ん中になる」ような gravity が設定されています.

5.2.3.3. visibility を設定する

今, メニューは下のような状態になっていると思います.

スクリーンショット 2017-04-01 17.09.56.png

カーソルは「選択状態にあるカーソルのみ表示」されるようにしなければいけないので,

見えている状態 (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) を設定して,

スクリーンショット 2017-04-01 17.13.14.png

それ以外の3つ ( ポケモン バッグ にげる ) には, 見えない状態 (invisible) を設定します.

スクリーンショット 2017-04-01 17.13.46.png

5.3. メニュー完成

それっぽい感じになりました.

スクリーンショット 2017-04-01 17.13.59.png

5.3.1. メニューを消してみる

一番最初, 5.1.1. で, LinearLayout(horizontal)android:visibility="visible" を設定したのを覚えているでしょうか.

これを invisible / visible とすることで, メニューを表示したり, 消したりできます.

スクリーンショット 2017-04-01 17.28.56.png

スクリーンショット 2017-04-01 17.29.03.png

おわりに

続きます

coming soon

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?