2.3. Android アプリの構成

2.1.プロジェクトの作成で、HelloWorldプロジェクトを作成しましたが、 その時に自動的にできたファイル等について説明していき、アプリ作成に必要な構成について説明していきます。

1. メインファイル

メインのJavaファイルは、「src - jp.sample.helloworld - MainActivity.java」ファイルです。


この中身を見てみると、以下のようになっています。

package jp.sample.helloworld;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
}

このMainActivityクラスがアプリ起動時に呼び出されます。
このクラスは、Activity(画面)クラスを継承しています。画面を作成する場合は、Activityクラスを継承する必要になります。
onCreate()は、画面が作成されるときに呼ばれるメソッドです。ここで、2.で説明する画面レイアウトを記述したxmlファイル を設定します。これによりレイアウトファイルに記述している画面が表示されます。
onCreateOptionsMenu()は、メニューが作成されるときに呼び出されるメソッドです。ここで、4.で説明するメニューレイアウトを 記述したxmlファイルを設定します。これでメニューボタンが押下されたときにメニューが表示されます。

2. 画面レイアウトファイル

画面レイアウトのファイルは、「res - layout - activity_main.xml」ファイルです。

この xml ファイルに画面レイアウトを記述します。 activity(アクティビティ)とは、Androidアプリで画面のことです。画面が複数ある場合は、Activityのxmlファイルが複数できることになります。
この中身を見てみると、以下のようになっています。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

</RelativeLayout>

Androidの画面の定義では、配置するためのレイアウト部品(ここでは、RelativeLayout)と、 実際に表示・操作するためのレイアウト部品(ここでは、TextView)の2種類があります。
RelativeLayoutは、その名のとおり相対的に配置を決めるレイアウトです。
この中にTextView(テキスト表示用部品)を配置することで、テキストを表示しています。
TextViewタグの中の「android:text="@string/hello_world"」の部分が、「Hello World!」の文字となります。
@string/hello_worldで指定した文字列は、string.xmlファイルで定義されます。
画面レイアウトについて詳しくは、3.アプリ作成 で説明します。

3. 文字列定義ファイル

文字列の定義ファイルは、「res - values - strings.xml」ファイルです。

この xml ファイルに文字列定義を記述します。
この中身を見てみると、以下のようになっています。

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">HelloWorld</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>

</resources>

先ほど、画面レイアウトファイルから呼び出していた、「Hello world!」の文字列等が定義されています。
stringタグで、name=XXXで呼び出すときの名称を記述し、タグの中に定義する文字列を記述します。
先ほど画面レイアウトで、@string/hello_world と記述されていましたが、それでhello_worldの名称で 定義されている文字、すなわち「Hello world!」を指定しています。

4. メニューレイアウトファイル

メニューボタン押下時の表示画面を記述するレイアウトファイルです。
これは、「res - menu - menu.xml」です。


この中身を見てみると、以下のようになっています。

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="@string/action_settings"/>

</menu>

画面レイアウト同様に、メニュー表示もxmlファイルで記述します。
menuタグにitemが1つだけあります。今回のサンプルでメニューボタンを押下すると、 action_settingsというメニューが1つだけ表示されます。

5. マニフェストファイル

マニフェストファイルとは、アプリの情報を記述するファイルです。
ここに、アプリのタイトル、必要なSDKバージョン(androidバージョン)、アプリの種類、 必要とする権限(インターネットアクセス、カメラを使用する)等を記述します。
マニフェストファイルは、「AndroidManifest.xml」ファイルです。

この中身を見てみると、以下のようになっています。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="jp.sample.helloworld"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="jp.sample.helloworld.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

本ファイルについては、このような情報を記述するファイルがある、ということを覚えておけばとりあえずはいいと思います。
Androidのスマホでアプリをインストールするときに、権限の確認画面が表示されると思いますが、 それは、このファイルに設定された権限が表示されます。
権限を必要とする機能を使用する場合は、このファイルに記述しなければ使用することができないようになっています。

6. その他のファイル

その他、自動生成されるファイル(R.java)や、色や文字などのスタイルを設定するファイル(style.xml)等ありますが、 詳細は追々説明していきたいと思います。



次は・・・
次は、Androidアプリのサンプルを作成しながらもう少し詳しくアプリの作成について説明します。
3. アプリ作成 (サンプル)