このサイトでは、デスクトップアプリケーションを任意のテキストエディタと 処理系(コンパイラ)のみで作る方法を中心に説明してきました。
しかし、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 をダブルクリックすると次のコードがメイン画面に表示されます。
<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 フォルダの中に com.example.myapplication フォルダがあり、その中に MainActivity.kt が入っています。このファイルの拡張子 .kt は表示されません。com.example.myapplication はプロジェクトをデフォルトで作った場合のアプリケーション識別子です。 アプリケーション識別子は、このように逆URL にすることになっています。MainActivity をダブルクリックすると、プロジェクトウィンドウのメイン画面に MainActivity.kt のコードが表示されます。なお (android Test) フォルダと (test) フォルダは無視してもらって 結構です。この 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 ファイルをアプリケーションの見た目 (デザイン)として設定しています。
このフォルダに、アプリケーションで使う色々な画像が格納されます。 なおアイコンは別のフォルダに格納されます。
layout フォルダの中の activity_main.xml がアプリケーションの見た目(デザイン) を設定しているファイルです。activity_main.xml をダブルクリックすると プロジェクトウィンドウのメイン画面にアプリケーションの見た目が表示されます。 さらに右上の Code タブと Design タブをクリックするとコード画面とデザイン画面が 切り替わります。Code タブでは次のようなコードが表示されます。
<?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 のところは次のようになっています。
android:text="Hello World!" の Hello World! を Hello Again に変えて、 アプリケーションをビルドすると、表示される文字列が次のようになります。
アイコン画像が入っています。
values フォルダの中には、色を設定している colors.xml、文字列を設定している strings.xml、そして themes フォルダの中にテーマを設定している themes.xml が入っています。themes.xml (night) はナイトバージョンの設定が入っていると思います。
<?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進数で記述された色と名前を結びつけています。他のファイルからは この名前で色を参照することができます。
<resources>
<string name="app_name">My Application</string>
</resources>
このファイルで文字列と名前を結びつけています。app_name はマニフェストで参照されて いるアプリケーション名です。My Application のところを Hello Again に変更して アプリケーションをビルドすると、アプリケーション名が次のようになります。
<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(ティール)は緑色の一種です。