Android の Button アプリを作ってみると簡単だった

アプリの作り方の基本を習得するために、ボタンを押したら文字が変わるという簡単なアプリを作ってみます。

Android Studio
2024.1.1




Button

 

アプリ開発の最初にButtonを試すのは意味があります。表示するだけでなく、UIをタップするとActionが発生するというアプリの基本を実感できるからです。Androidではこれが簡単にできるようにAPIが組まれています。
 
またここではJava言語を使いますが Kotlin を使うとコード量を減らすことができます。
 
最初はプロジェクトの作成から入っていますが、既に理解できていればコードの記述にSkipして「MainActivity」から始めても構いません。
 

 

プロジェクトの作成

 

Android Studio から「New project」を選択します。
 
あるいは既にプロジェクトが表示されているのであれば
「File」「New」「New Project…」
を選択して新規プロジェクトを開始できます。
 
「File」「Close project」では一旦プロジェクトを終了させてTop画面に戻ることもできます。

 
Activityのタイプを選定:
Empty Views Activity が使いやすいです。他のものは便利なのですが、ある程度アプリ構築を理解できてからのほうがいいでしょう。「Next」

1x1.trans - Android の Button アプリを作ってみると簡単だった


 
プロジェクトの名前を入れます。
例: TestButton プロジェクトを作成する場合
  • Name: TestButton
  • Package name: com.example
    • これはテストでは適当なexample.com.testbutton にしておきます。本番アプリではユニークなパッケージ名を付けます。
  • Save location: アプリプロジェクトを保存する場所
    • MacとWindowsでは異なりますが、後で自分で分かるようにしておきます
  • Language: Java
    • KotlinかJavaの開発言語の選択
  • Minimum API Level: API 34: Android 14.0
    例としてAPI34で始めますが、実機でテストする場合は、Levelを実機に合わせて落とすこともあります
    後からMinimum SDKを build.gradle から変えることもできます

これでプロジェクトを作成

1x1.trans - Android の Button アプリを作ってみると簡単だった


 
プロジェクトが完成しました。
 
1x1.trans - Android の Button アプリを作ってみると簡単だった
 

MainActivity

 

コードを記述していきます。
プロジェクトが作成されると「Project」のTAGで階層が表示されます。
主に MainActivity.javaactivity_main.xml を使います。
 
1x1.trans - Android の Button アプリを作ってみると簡単だった


 
Java のコーディングは MainActivity.java にします。Empty Activityを選んだので、ある程度の基本的なコードは既に入っています。
 

 
activity_main.xml にはレイアウトを記述
やり方としては、

  • 「Code」で全てコードで記述
  • 「Split」 CodeとDesignの混合
  • 「Design」を使って画面上にUIパーツを配置する

「Design」ではレイアウトの配置全体をデザイン的に決めていくには便利です。
レイアウトの種類に応じて設定方法がことなりますが、デフォルトのConstraintLayoutの使い方は慣れないと初めはわかりにくいかもしれません。

右上の3つ並んだアイコンで「Code」「Split」「Design」の切り替えができます。
 
1x1.trans - Android の Button アプリを作ってみると簡単だった


 
「Code」は並んだアイコンの左端です。
微調整も含めた細かな設定はコーディングがいいでしょう
 
 
MainActivity.javaの onCreateメソッドにボタンを設定する記述をします。

 
ここで、エラーが表示されますが後でコードを正しく追加すれば消えます。
あるいは、エラーとなっているところにこのようポップアップが出た場合は、エラー部分にマウスを置いて「Alt+Enter」を行うと自動的に以下の行が追加されます。(MacとWindowsではコマンドが異なります)
 

 
1x1.trans - Android の Button アプリを作ってみると簡単だった

また、R.id.button がエラーになっていますが、後でレイアウトの設定をすれば解消します。
 
 

setContentView:

Screenにテキスト、ボタン、画像を表示させる仕組みで SetContentView() は最終的にViewをまとめるところです。

それぞれTextViewなどのViewを何種類かある Layout に設定し、それを SetContentView() に入れます。

1x1.trans - Android の Button アプリを作ってみると簡単だった

ファイルでは(LinearLayoutの例)

1x1.trans - Android の Button アプリを作ってみると簡単だった

 
既にこれが記述されていて、これが activity_main.xml ファイルをレイアウトとして登録し表示する設定です。
 

 
これはリソースの(レイアウトファイル)からid が button のものを見つけてくることを意味します。
findViewById
 

findViewById は呼び出しが増えると重くなるなどプロジェクトが大きくなると問題が発生することもあり、対案としてNull安全、型安全であるView Binding を使うことができます。ただ今のところ findViewById は非推奨ではありません

次に TextView を設定します。このケースではTextViewは事前に onCreate() の前に作成します。
private TextView textView;

onCreate() の中に
textView = findViewById(R.id.textView);
 
その後に、ボタンがタップされた事が分かるようにリスナー登録します。

OnClickListener():
リスナー、つまりアプリが起動中に、ユーザーがボタンをタップしたイベント発生を聞き耳を立てているというようなことでしょうか。
 

 
尚、lambda式を使うとよりシンプルになります。

lambda式は分かりにくいかもしれませんがおいおい理解していきましょう
 

cat64 00 100x100 - Android の Button アプリを作ってみると簡単だった
lambda   Java8の機能の1つで関数型プログラミングを行うために導入され、Android Studio 2.4 辺りから使える...

 

ボタンがタップされた時の挙動を決めます。
ボタンタップされるとフラグのbuttonTapを判別して

  • trueなら「Hello」
  • falseなら「World」

が表示されるコードです
setText() でTextViewの文字列を設定
 

 
いくつか追加して、

import android.widget.TextView;
private TextView textView;
private boolean buttonTap = false;

とりあえずコードをまとめるとこうなります。
 
MainActivity.java

 

この状態ではまだエラーがありますがレイアウトファイルを設定すれば解消します。

package com.example.testbutton;
これは上ではコメントアウトしていますが、あなたが作ったプロジェクトのパッケージ名ができているのをつかってください。

 

activity_main

 

レイアウトを設定します。
フォルダ res 以下の layout に activity_main.xmlファイルがあります
 
MainActivity.java では button と textView を呼び出していますのでそれをここに作成します。デフォルトでは「ConstraintLayout」が設定されています。
ボタンのIDは以下で定義されています
android:id=”@+id/button”
TextViewも同様です
android:id=”@+id/text_view”
 
またTextViewの垂直方向の位置調整で
app:layout_constraintVertical_bias=”0.4″
と設定します。
またButtonは
app:layout_constraintVertical_bias=”0.6″

 
..\res\layout\activity_main.xml

 

build.gradle

 

ここではこのファイルに記述が必要ではありませんが
後々必要となりますので紹介しておきます。

build.gradle(Module: app)はプロジェクトの依存関係、APIレベル、バージョンなどを設定するところで最初のうちは使う頻度は少ないかもしれません。
他にもbuild.gradle(Project: XXOO)やsettings.gradleなどあります。
 
1x1.trans - Android の Button アプリを作ってみると簡単だった


 
プロジェクト作成時に設定したAPIレベルですが、後から変更するにはこれを使います。

(これは環境によって変わります)

  • compileSdk
    • compileする API のバージョン
  • minSdk
    • 対応できる最下位のAPIバージョン
  • targetSdk
    • アプリケーションが対応しているAPIのバージョン
  • versionCode
    • アプリのリリース毎にアップデートさせるべきコード、1 -> 2 -> 3 …
  • versionName
    • ユーザーから見えるバージョンですversionCodeは上げてもこれはそのままにできます。リリース直後のバグ修正にはversionCodeは上げてもversionNameはそのままにするケース。1.0.0 -> 1.0.1 -> 1.1.0 ….
 

アプリを実行

 

実際のAndroidで実行させてみましょう。PCのスペックが低くなければエミュレーターで確認できます。

エミュレーターの立ち上がりに時間がかかるようであれば実機を使います。 
Windows の場合は、実機のUSBドライバーを入れてください。スマホメーカーから提供されていると思います。USB ドライバーの設定
Macの場合はこのドライバーの設定は必要ありませんが、スマホのUSBデバッグを有効にする必要があります。
 
エミュレーターを選択し
メニューから「Run」->「Run ’app’」とするか
三角のアイコンをクリックするとビルドが始まります
 
1x1.trans - Android の Button アプリを作ってみると簡単だった


 
あまりレイアウトはぱっとしませんが
とりあえず、ボタンを押すとテキストが変わるアプリができました
 
1x1.trans - Android の Button アプリを作ってみると簡単だった

  

テキストサイズとテキストの色を指定して
少し見栄えを良くしてみます

activity_main.xml

 
文字が大きく、色が変わりました。
1x1.trans - Android の Button アプリを作ってみると簡単だった


 
 

リテラルの修正

 

このコードは確かに動くのですが、コードをよく見るとあちこちにワーニングが出ています。黄色いバックグラウンドになっているところにマウスを持ってくると、
 
1x1.trans - Android の Button アプリを作ってみると簡単だった


 
String literal in setText can not be translated. Use Android resources instead.
Localizing with Resources | Android Developers
とあります。
setTex(“Hello”)
のようにHelloという文字列をハードコードで直書きしているリテラルが、正しく解釈されないのでresourceを使うようにと注意されているわけです。
 
例えば日本語でハードコーディングすると文字化けやコードが走らない事があり得るのです。修正は、
 

 
1x1.trans - Android の Button アプリを作ってみると簡単だった


この res\values\strings.xml に
nameが”hello”というkeyに対してHelloというvalueを設定します。
 

 
このワーニングはactivity_main.xmlのリテラルにも出ているので合わせて修正すると。
strings.xml

 

それぞれの修正箇所です。
MainActivity.java

 
レイアウトは
activity_main.xml

 
完成です。
 

 

以上はJava言語で記述しましたが、Kotlin も正式に使用可能言語となりました。以上をKotolinで書くと以下のようになります。

as413k m21 00 100x100 - Android の Button アプリを作ってみると簡単だった
KotlinでAndroidの Button アプリを簡単に作ってみました。 findViewByIdの代わりにAndroid Kotli...

関連ページ:

 

Reference:
Buttons | Android Developers

シェアする

  • このエントリーをはてなブックマークに追加

フォローする