Android Studio環境構築(6)JavaでHello World

# はじめに

Androidアプリの開発のために、Android Studioの環境構築をします。
この記事で取り扱う環境は、Windows10です。

:::note info
真新しい情報ではありません。体系立てて理解を整理するために、自分が理解しやすい枠組みでまとめるものです。
:::

## ひとつ前

https://qiita.com/w2mjra555/items/e7d18bb43cf3b7da8cdb

## ひとつ先

https://qiita.com/w2mjra555/items/cdd838c2e11b76814c84

## JavaでHello World

## 1.Javaプロジェクトの作成

### 1.1.新規プロジェクト(テンプレート選択)

空のアクティビティを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515319/626ba27e-6f38-4cac-9643-15e1feb64a5e.png)

### 1.2.新規プロジェクト(プロジェクトの構成)

プロジェクトの構成情報を入力して「完了(F)」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515319/f761f1b6-f9e4-520f-b078-d0c30d45d186.png)

| 項目 | 値 |
|:-----------|:------------|
| 名前       | `JavaHelloWorld` |
| パッケージ名     | `com.example.javahelloworld` (ひとまず名前に対するデフォルト) |
| 保存ロケーション     | `C:\AndroidDev\JavaHelloWorld` (任意の場所) |
| 言語     | Java |
| 最小 SDK     | `API 30: Android 11.0(R)` |

### 1.3.レイアウトファイルの確認
`src/main/res/layout/activity_main.xml`の中身を確認します。
TextViewの中に`"Hello World!"`というテキストが定義されているのが分かります。
```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>
```
### 1.4.アクティビティクラスの確認
`src/main/java/com/example/javahelloworld/MainActivity.java`の中身を確認します。
```java
package com.example.javahelloworld;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

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

### 1.5.アプリ マニフェストの確認
`src/main/AndroidManifest.xml`の中身を確認します。
```xml 
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.javahelloworld">

    <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.JavaHelloWorld">
        <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>
```

### 1.6.仮想デバイスで確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515319/4eb0e6bf-7907-62fe-6f87-f0cee00f640f.png)

## 2.メッセージをJavaから書き換える

### 2.1.`src/main/res/layout/activity_main.xml`の定義変更

Hello Worldが定義されているTextViewを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515319/dd171e5c-fef0-9404-ac2b-18bb4375a3de.png)

| 項目 | 変更内容 |
|:-----------|:------------|
| ID　| 空欄 → `welcomeMessage` |
| Text       | `Hello World` → 空欄  |

書き換わっていることを確認します。
```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:id="@+id/welcomeMessage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>
```

### 2.2.アクティビティクラスに出力処理を追加

`src/main/java/com/example/javahelloworld/MainActivity.java`を編集します。
```java
package com.example.javahelloworld;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView textView = findViewById(R.id.welcomeMessage);
        // さいしょは直書き
        textView.setText("ようこそいらっしゃいました！");
    }
}
```

### 2.3.仮想デバイスで確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515319/07875668-cf44-a3aa-0600-ae5cf8163c15.png)