Android   プロジェクト

ホーム

このサイトでは、デスクトップアプリケーションを任意のテキストエディタと 処理系(コンパイラ)のみで作る方法を中心に説明してきました。

しかし、Android アプリケーションは IDE(統合開発環境)を使わなければなりません。 IDE は、開発するアプリケーションをプロジェクトという単位で管理します。そのため、 プロジェクトに含まれる個々のファイルを説明しなければならないと思います。

プロジェクト

プロジェクトの内容は、プロジェクトウィンドウの左ペインに表示されています。 もし表示されていなかったら、プロジェクトウィンドウの左側のタブから Android を選択してください。

プロジェクトの第一階層には app フォルダと Gradle Scripts フォルダがあります。 Gradle Scripts は Android プログラミングで GUI 部品(ビューパーツ)を特定するための 新しい方法の View Binding を有効にする場合に使います。

app フォルダを開くと manifests と java と res フォルダがありませす。java と res フォルダには、それぞれ (generated) というフォルダもありますが、 これらは無視してもらって大丈夫です。


マニフェスト

manifests フォルダには AndroidManifest.xml が入っています。AndroidManifests.xml をダブルクリックすると次のコードがメイン画面に表示されます。

AndroidManifests.xml


<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapplication">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.MyApplication">
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
    

このファイルに、アプリケーション名やアイコンや、アクティヴィティはどれを参照すれば 良いかが書かれています。このファイルを変更することはあまりありませんが、アイコンは res フォルダの mipmap フォルダの ic_launcher フォルダと ic_launcher_round フォルダの中の画像を参照していることなどがわかります。


java フォルダ

java フォルダの中に com.example.myapplication フォルダがあり、その中に MainActivity.kt が入っています。このファイルの拡張子 .kt は表示されません。com.example.myapplication はプロジェクトをデフォルトで作った場合のアプリケーション識別子です。 アプリケーション識別子は、このように逆URL にすることになっています。MainActivity をダブルクリックすると、プロジェクトウィンドウのメイン画面に MainActivity.kt のコードが表示されます。なお (android Test) フォルダと (test) フォルダは無視してもらって 結構です。この MainActivity.kt にアプリケーションの挙動や動作を記述していきます。

MainActivity.kt


package com.example.myapplication

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}
    

1行目にアプリケーション識別子がパッケージ名として指定されています。

続けて、アプリケーションで使用するクラスをインポートしています。

次に AppCompatActivity クラスを継承した MainActivity クラスを作成して、 onCreate メソッドをオーバーライドしています。

onCreate メソッドでは、まずスーパークラスの onCreate メソッドを呼び出して、続けて setContentView メソッドで引数で指定している XML ファイルをアプリケーションの見た目 (デザイン)として設定しています。


res フォルダ

drawable

このフォルダに、アプリケーションで使う色々な画像が格納されます。 なおアイコンは別のフォルダに格納されます。

layout

layout フォルダの中の activity_main.xml がアプリケーションの見た目(デザイン) を設定しているファイルです。activity_main.xml をダブルクリックすると プロジェクトウィンドウのメイン画面にアプリケーションの見た目が表示されます。 さらに右上の Code タブと Design タブをクリックするとコード画面とデザイン画面が 切り替わります。Code タブでは次のようなコードが表示されます。

activity_main.xml


<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>
    

このファイルについて全部は説明しませんが、たとえば <TextView のところは次のようになっています。

  1. android:layout_width="wrap_content"
    テキストビューの横幅を内容(テキスト)がちょうど入る大きさに設定しています
  2. android:layout_height="wrap_content"
    テキストビューの縦幅を内容(テキスト)がちょうど入る大きさに設定しています
  3. android:text="Hello World!"
    表示されるテキストを Hello World に設定しています
  4. app:layout_constraintBottom_toBottomOf="parent"
    テキストビューの下側を parent(今回の場合は画面全体)の下側に束縛しています
  5. app:layout_constraintLeft_toLeftOf="parent"
    テキストビューの左側を parent(今回の場合は画面全体)の左側に束縛しています
  6. app:layout_constraintRight_toRightOf="parent"
    テキストビューの右側を parent(今回の場合は画面全体)の右側に束縛しています
    左側と右側を束縛することによってテキストビューは画面左右の中央に表示されます
  7. app:layout_constraintTop_toTopOf="parent"
    テキストビューの上側を parent(今回の場合は画面全体)の上側に束縛しています
    下側と上側を束縛することによってテキストビューは画面上下の中央に表示されます

android:text="Hello World!" の Hello World! を Hello Again に変えて、 アプリケーションをビルドすると、表示される文字列が次のようになります。

mipmap

アイコン画像が入っています。

values

values フォルダの中には、色を設定している colors.xml、文字列を設定している strings.xml、そして themes フォルダの中にテーマを設定している themes.xml が入っています。themes.xml (night) はナイトバージョンの設定が入っていると思います。

colors.xml


<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="purple_200">#FFBB86FC</color>
    <color name="purple_500">#FF6200EE</color>
    <color name="purple_700">#FF3700B3</color>
    <color name="teal_200">#FF03DAC5</color>
    <color name="teal_700">#FF018786</color>
    <color name="black">#FF000000</color>
    <color name="white">#FFFFFFFF</color>
</resources>
	

このファイルで16進数で記述された色と名前を結びつけています。他のファイルからは この名前で色を参照することができます。

strings.xml


<resources>
    <string name="app_name">My Application</string>
</resources>
	

このファイルで文字列と名前を結びつけています。app_name はマニフェストで参照されて いるアプリケーション名です。My Application のところを Hello Again に変更して アプリケーションをビルドすると、アプリケーション名が次のようになります。

themes.xml


<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    <style name="Theme.MyApplication"
    parent="Theme.MaterialComponents.DayNight.DarkActionBar">
        <!-- Primary brand color. -->
        <item name="colorPrimary">@color/purple_500</item>
        <item name="colorPrimaryVariant">@color/purple_700</item>
        <item name="colorOnPrimary">@color/white</item>
        <!-- Secondary brand color. -->
        <item name="colorSecondary">@color/teal_200</item>
        <item name="colorSecondaryVariant">@color/teal_700</item>
        <item name="colorOnSecondary">@color/black</item>
        <!-- Status bar color. -->
        <item name="android:statusBarColor"
        tools:targetApi="l">?attr/colorPrimaryVariant</item>
        <!-- Customize your theme here. -->
    </style>
</resources>
	

このファイルでどこの部分はどの色を使うかなどを設定しています。 "colorPrimary" を @color/teal_200 に、colorPrimaryVariant を @color/teal_700 に変更して、アプリケーションをビルドすると次のようになります。 Teal(ティール)は緑色の一種です。




14118 visits
Posted: Oct. 23, 2021
Update: Dec. 06, 2021

ホーム   目次