Java
Android

Android開発の基礎について

はじめに

こんにちは。某学校でプログラミング等の勉強中のサーバーサイドのプログラマーのワタタクです。:relaxed:
今回もAndroid開発していきましょう。
今回はリクエストがございましたので、リクエストにお答えしましてAndroid開発の基礎について分かりやすく書いていこうかと思います。

対象者

  • Javaがなんとなく書ける人。
  • Androidの開発をしてみたい、いきたい人。
  • Android開発においては初心者。

今回書かないこと

  • AndroidStudioのインストールのことについて。

作っていくもの

名前を入力してボタンを押すと下の表示エリアに入力されたものと「〜さん、素敵」という文字列が表示される。

画面

xmlファイルにて画面を作っていきます

activity_button_click_sample.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

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

    <EditText
        android:id="@+id/etName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="text"/>

    <Button
        android:id="@+id/btClick"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/bt_click"/>

    <TextView
        android:id="@+id/tvOutput"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="25dp"
        android:text=""
        android:textSize="25dp"/>

</LinearLayout>

解説

タグ

  • LinearLayout : パーツを縦一列もしくは横一列に並べる場合に使用するレイアウト。
  • TextView : 表示エリアを作る
  • EditText : 入力エリアを作る
  • Button : ボタンを作る

属性

共通属性

①android:layout_width="〜〜〜"
②android:layout_height="〜〜〜"

①幅の属性
②高さの属性

<〜〜〜に入る値>

  • match_parent : 画面いっぱいまで広げる。
  • wrap_content : 適度なサイズで表示してくれます。

LinearLayoutの属性

android:orientation="〜〜〜"

<〜〜〜に入る値>

  • vertical : 縦に並べる
  • horizontal : 横に並べる

LinearLayout以外で使っている属性

android:text="value値"
*通常「string.xml」で出力する内容を指定し、そこから読み込んでくるイメージ
android:text="@string/bt_click"
android:id="@+id/アクティビティで部品を取得為のID(名前)"
→R値:resフォルダ内のファイルやそのファイルの「@ + id/」の値などは管理対象なのでそのファイルや値を識別するint型の整数。
自動生成される。
android:id="@+id/tvOutput"

EditTextで使っている属性

android:inputType="〜〜〜"

〜〜〜 : inputTypeの種類

<inputTypeの種類>
none 入力不可。
text 普通のテキスト。
textCapCharacters すべて大文字で入力する場合。
textCapWords 単語の先頭を大文字で入力する場合。
textCapSentences 文章の先頭を大文字で入力する場合。
textAutoCorrect 文字の入力を自動で修正する場合。
textAutoComplete 文字の補完入力する場合。
textMultiLine 文字を複数行入力する場合。
textImeMultiLine 通常の文字入力時は複数入力を許可せず、IMEによって複数行入力を設定する場合。
textUri URLを入力する場合。
textEmailAddress メールアドレスを入力する場合。
textEmailSubject メールの件名を入力する場合。
textShortMessage ショートメッセージを入力する場合。
textLongMessage ロングメッセージを入力する場合。
textPersonName 人名を入力する場合。
textPostalAddress 住所を入力する場合。
textPassword パスワードを入力する場合。
textVisiblePassword パスワードの文字を見せて入力する場合。
textWebEditText HTMLを入力する場合。
textFilter 他のデータでフィルタされた文字を入力。
textPhonetic 発音記号を入力する場合。
number 数値入力する場合。
numberSigned 符号付きの数値を入力する場合。
numberDecimal 小数入力する場合。
phone 電話番号を入力する場合。
datetime 日付時刻を入力する場合。
date 日付を入力する場合。
time 時刻を入力する場合。

アクティビティ(処理)

javaで書いていきます。

ButtonClickSampleActivity.java
public class ButtonClickSampleActivity extends AppCompatActivity {

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

        Button button = findViewById(R.id.btClick);
        ButtonClickListener listener = new ButtonClickListener();
        button.setOnClickListener(listener);
    }

    /**
     * ボタンが押された時の処理が記述されたメンバクラス
     */
    private class ButtonClickListener implements View.OnClickListener {

        @Override
        public void onClick(View view) {
            EditText input = findViewById(R.id.etName);
            String inputStr = input.getText().toString();

            TextView output = findViewById(R.id.tvOutput);
            output.setText(inputStr + "さん、素敵!!" );
        }
    }
}

解説

AppCompatActivityを継承します。

onCreate()メソッド

Androidアプリが起動するメソッド。
→初期表示などに必要なことはこのメソッド内に書く。
しかし、以下の2行は必須

  • super.onCreate(savedInstanceState);
  • setContentView(画面のxmlファイル);

*この2行は書いてくれているが一様のため書いておく。

画面部品取得

findViewById()を使い、引数にその部品のR値(部品につけたID)を指定します。

EditText input = findViewById(R.id.etName)

文字列を取得する

getText().toString()を使います。

input.getString().toString()

文字列を埋め込む

setText("埋め込む文字列")を使います。

TextView output = findViewById(R.id.tvOutput);//部品取得
output.setText(inputStr + "さん、素敵!!" );

イベントリスナー

  • イベント:画面に対してユーザが何かの操作をすること。
  • イベントハンドラ:イベントに対応して行う処理。
  • リスナー:このイベントの検証を行う。

*Androidではこのリスナーを設定しないとイベント処理が成り立たない。

リスナー設定の手順

①それぞれのイベントに対応したリスナークラスをメンバクラスとして作成する。
②インターフェースに定義されたメソッドに処理を書く。
③リスナークラスを「new」してリスナーを設定する。

例)(ボタンのクリックリスナー)

Button button = findViewById(R.id.btClick);
ButtonClickListener listener = new ButtonClickListener();
button.setOnClickListener(listener);

private class ButtonClickListener implements View.OnClickListener {

        @Override
        public void onClick(View view) {
            EditText input = findViewById(R.id.etName);
            String inputStr = input.getText().toString();

            TextView output = findViewById(R.id.tvOutput);
            output.setText(inputStr + "さん、素敵!!" );
        }
}

また無名関数を使った書き方もできる(参考書などはこの書き方で書いていることが多い。)
やっていることは同じ。

findViewById(R.id.btClick).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                EditText input = findViewById(R.id.etName);
                String inputStr = input.getText().toString();

                TextView output = findViewById(R.id.tvOutput);
                output.setText(inputStr + "さん、素敵!!" );
            }
});

以上。Android開発の基礎でした。
もし何か間違っている等のご指摘があればご連絡ください。
最後まで読んで頂きありがとうございました。