Android-UIデザイン
この章では、Android画面のさまざまなUIコンポーネントについて説明します。この章では、UIデザインを改善するためのヒントと、UIのデザイン方法についても説明します。
UI画面コンポーネント
Androidアプリケーションの一般的なユーザーインターフェイスは、アクションバーとアプリケーションコンテンツ領域で構成されています。
- メインアクションバー
- ビューコントロール
- コンテンツエリア
- スプリットアクションバー
これらのコンポーネントは、下の画像にも示されています-
画面コンポーネントを理解する
Androidアプリケーションの基本単位はアクティビティです。UIはxmlファイルで定義されます。コンパイル中に、XMLの各要素は、メソッドで表される属性を持つ同等のAndroidGUIクラスにコンパイルされます。
ビューとビューグループ
アクティビティはビューで構成されます。ビューは、画面に表示される単なるウィジェットです。ボタンなどの場合があります。1つ以上のビューを1つのGroupViewにグループ化できます。ViewGroupの例には、レイアウトが含まれています。
レイアウトの種類
レイアウトには多くの種類があります。そのうちのいくつかを以下に示します-
- 線形レイアウト
- 絶対レイアウト
- テーブルレイアウト
- フレームレイアウト
- 相対レイアウト
線形レイアウト
線形レイアウトはさらに水平レイアウトと垂直レイアウトに分けられます。これは、ビューを1つの列または1つの行に配置できることを意味します。これは、テキストビューを含む線形レイアウト(垂直)のコードです。
<?xml version=”1.0” encoding=”utf-8”?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:orientation=”vertical” >
<TextView
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:text=”@string/hello” />
</LinearLayout>
AbsoluteLayout
AbsoluteLayoutを使用すると、子の正確な場所を指定できます。このように宣言することができます。
<AbsoluteLayout
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
xmlns:android=”http://schemas.android.com/apk/res/android” >
<Button
android:layout_width=”188dp”
android:layout_height=”wrap_content”
android:text=”Button”
android:layout_x=”126px”
android:layout_y=”361px” />
</AbsoluteLayout>
TableLayout
TableLayoutは、ビューを行と列にグループ化します。このように宣言することができます。
<TableLayout
xmlns:android=”http://schemas.android.com/apk/res/android”
android:layout_height=”fill_parent”
android:layout_width=”fill_parent” >
<TableRow>
<TextView
android:text=”User Name:”
android:width =”120dp”
/>
<EditText
android:id=”@+id/txtUserName”
android:width=”200dp” />
</TableRow>
</TableLayout>
相対レイアウト
RelativeLayoutを使用すると、子ビューを相互に相対的に配置する方法を指定できます。このように宣言できます。
<RelativeLayout
android:id=”@+id/RLayout”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
xmlns:android=”http://schemas.android.com/apk/res/android” >
</RelativeLayout>
FrameLayout
FrameLayoutは、単一のビューを表示するために使用できる画面上のプレースホルダーです。このように宣言することができます。
<?xml version=”1.0” encoding=”utf-8”?>
<FrameLayout
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignLeft=”@+id/lblComments”
android:layout_below=”@+id/lblComments”
android:layout_centerHorizontal=”true” >
<ImageView
android:src = “@drawable/droid”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content” />
</FrameLayout>
これらの属性とは別に、すべてのビューとビューグループに共通する他の属性があります。それらは以下にリストされています-
シニア番号 | 表示と説明 |
---|---|
1 | layout_width ビューまたはビューグループの幅を指定します |
2 | layout_height ビューまたはビューグループの高さを指定します |
3 | layout_marginTop ビューまたはビューグループの上面に追加のスペースを指定します |
4 | layout_marginBottom ビューまたはビューグループの下側に追加のスペースを指定します |
5 | layout_marginLeft ViewまたはViewGroupの左側に追加のスペースを指定します |
6 | layout_marginRight ビューまたはビューグループの右側に追加のスペースを指定します |
7 | layout_gravity 子ビューの配置方法を指定します |
8 | layout_weight レイアウト内の余分なスペースのどれだけをビューに割り当てるかを指定します |
測定単位
Android UIで要素のサイズを指定するときは、次の測定単位を覚えておく必要があります。
シニア番号 | ユニットと説明 |
---|---|
1 | dp 密度に依存しないピクセル。1 dpiは、160dpi画面の1ピクセルに相当します。 |
2 | sp スケールに依存しないピクセル。これはdpに似ており、フォントサイズを指定する場合に推奨されます |
3 | pt ポイント。ポイントは、物理的な画面サイズに基づいて、1/72インチと定義されます。 |
4 | px ピクセル。画面上の実際のピクセルに対応します |
画面密度
シニア番号 | 密度とDPI |
---|---|
1 | Low density (ldpi) 120 dpi |
2 | Medium density (mdpi) 160 dpi |
3 | High density (hdpi) 240 dpi |
4 | Extra High density (xhdpi) 320 dpi |
レイアウトの最適化
効率的なレイアウトを作成するためのガイドラインの一部を次に示します。
- 不要な入れ子を避ける
- あまりにも多くのビューを使用しないでください
- 深い入れ子を避ける