アプリ開発初心者の暇つぶしAndroid体験記

アプリ開発初心者がAndroidアプリ開発始めました。日々学んだことをアウトプットしていきます。

入力された文字を処理してみよう(1)

 

今回は画面から入力された文字を受け取って処理するアプリケーションを作ってみようと思います。

次の目標は、、、

 2つの数字を足し算して結果を出す!

くらいにしておきましょうか。スモールステップで!笑

 

1. テキスト入力エリアを配置してみる

テキスト入力エリアの使い方から勉強しないと始まりませんね。

ひとまず1つ置いて動かしてみましょう!

f:id:mtnanao:20200216174809p:plain

こちらの[Text]から色々な入力エリアを選択できそうです。

 

今回は計算に使う数字なので、Numberを選択してみます!

位置はひとまず気にせずに左上へ。

f:id:mtnanao:20200216175437p:plain

 

次はボタンを押したら、テキスト入力された数字が表示されるように

処理を変えていきましょう。

今回追加した入力エリアのidは、editTextですね。

実装で使うので覚えておきます。

 

2. 入力値を受け取るよう処理を実装する

MainActivity.javaに入力値が処理できるように変更を加えます!

修正後がこちら!(前回まで使った不要な部分はコメントアウトしています。)

f:id:mtnanao:20200216180858p:plain

変更箇所は以下の通りです。

  1.  [13行目] EditTextクラスの変数editNumを宣言。
  2.  [24行目] editNumにidがeditTextである部品情報を代入。
  3.  [38行目] editNumからEditText#getTextによって入力値を取得。その後、toStringで文字列型に変換。
  4.  [39行目] 入力値をToastで表示。

書いてあることは割と単純ですね。

ちなみに[24行目]の処理はonClickメソッドの中で書いても動きます。

その場合は[13行目]の宣言もonClickメソッドに書いても大丈夫ですね。

 

Toastについては過去の記事をご覧ください。

xprogrammingx.hatenablog.com

 

3. 動作確認

それではここまでで一回動かしてみます!

初期画面はこちら。

f:id:mtnanao:20200216182938p:plain

 

少し見づらいですが、左上に入力エリアが表示されましたね!

ここに適当な数字を打って、ボタンを押してみます。

f:id:mtnanao:20200216183110p:plain

入力した数字がToastで表示されました!

 

これで画面からの入力値を処理する方法が分かりました。

今回はここまでとします!

 

4. 次回予告

次回は2つのテキスト入力エリアとボタンを、

LinearLayoutを駆使してきれいに並べてみようかと思います!

 

 

RelativeLayoutで中央揃えやってみよう!

 

以前紹介したRelativeLayoutを使って、HelloWorldを作る際に配置したボタンを中央寄せしてみようと思います!

 

0. はじめに

RelativeLayoutを以前紹介した時の記事はこちらです!

xprogrammingx.hatenablog.com

 

それではやっていきましょう。

  

1. ボタン配置直後のxml

ボタンを配置した時に自動生成されたmain_activity.xmlの定義を見てみます。

f:id:mtnanao:20200216161554p:plain

9行目から15行目が自動で作成されたボタンの定義のようです。

よく見ると9行目に赤線・・・。内容はざっとこんな内容でした。

 「デザイン時の位置しか指定していないので、動かした時は初期位置だよ」

とのこと。

この14行目、15行目にある、

layout_editor_absolute はあくまでデザイン時の位置指定でしかないということですね。

 

2. 定義を変更する

実際にRelativeLayoutで書き換えた定義がこちら!

f:id:mtnanao:20200216163523p:plain

変更したところは以下の2カ所です。

  1.  [2行目] ConstraintLayout から RelativeLayoutに変更
  2.  [14行目] layout_centerInParent="true" を追加

紹介記事に書いた通りなので解説は省略しますが、

簡単に中央に寄せることが出来そうですね!

 

3. レイアウト確認

変更したデザインをアプリケーションを動かして確認してみます。 

f:id:mtnanao:20200216164221p:plain

 

見事、ボタンが画面中央に寄りました!

RelativeLayoutは相対的な位置を指定できるので、

中央寄せは得意分野ですね!

 

 

まずはHello World(3)

平日はなかなか時間が取れませんね・・・。

さて、日が空いてしまいましたが続きをやっていきます。

前回までの実装はこちら。

xprogrammingx.hatenablog.com

 

1. デザインのボタンを追加

今回は、ボタンを追加するところからやっていきたいと思います!

前回の記事で確認しましたが、アプリ起動時に最初に表示される画面は

activity_main.xmlで定義されていましたね。

なので、このxmlをいじって初期画面にボタンを置いてみましょう。

 

f:id:mtnanao:20200216122048p:plain

 

画面下部にあるデザインタブをクリックすると、

xml形式ではなく画面のデザインが表示されました!

左上にある様々なパーツからドラッグ&ドロップで配置ができるようです!

さっそく、「Button」を画面中央に配置しました。

 

2. ボタンの属性を変えてみる

今度はボタン内のテキストを変えてみます。

f:id:mtnanao:20200216122150p:plain

 

 画面右側の[宣言された属性] -> [text]がボタン内のテキストですね!

今回は「PUSH HERE!」に変更してみました!

このあと[id]の部分も使うので覚えておきましょう。

今回は変更せずにbuttonのままとします。

レイアウトの修正はこれで終わりですね。

 

3. クリックイベントのリスナーを実装

次はこのボタンを押した際の処理を実装していきます!

(やっとプログラミングっぽくなりましたね。笑)

 

実装する対象はMainActivity.javaですね。

「ボタンを押す」などの画面から伝わる動作はイベントとして管理されます。

このイベントをキャッチする役割を担うのが「イベントリスナー」になります。

 

今回は「クリック」イベントをキャッチする「イベントリスナー」である、

OnClickListenerを追加していく必要があります。

 

それを追加したのがこちらです。

f:id:mtnanao:20200216124449p:plain
修正箇所は以下です。

  1. [8行目] インタフェース OnClickListenerを追加
  2. [16行目] findViewById(R.id.button).setOnClickListener(this)を追加
  3. [22行目] onClick(view v)メソッドを追加

少し解説を加えておきます。

  1.  さきほど書いたとおり、OnClickListenerの追加ですね。
  2.  findViewByIdはidの名前でレイアウト内のものを探してくれます。配置したボタンのidは「button」なので、R.id.buttonとします。setOnClickListenerはボタンに対して、イベントリスナーを追加します。この引数には、OnClickListenerインタフェースを実装したクラスを入れるので、今回はthis(当クラス)になります。
  3.  onClickメソッドの中身が実際にクリック後に動く処理ですね。ここにやりたいことを書いていきます。

 

4. クリックされた際の処理を実装

やっと ここまで来ました。

ボタンが押されたらHello Worldを出す処理を書いてみます。

書いた処理がこちら!

f:id:mtnanao:20200216131424p:plain

追加したのは26行目だけですね。

簡単なメッセージを表示するのにToastを使うみたいです。

パン?と思いましたが、Toastとは祝杯や祝辞という意味らしい。

 

Toast#makeTextの引数を簡単に解説します。

第一引数はContext。自分自身を指定するのでthisを入れます。

第二引数は表示したいメッセージ内容。

第三引数は表示している時間ですね。定数としてLENGTH_SHORT、LENGTH_LONGが用意されていますね。

 

最後にToast#showメソッドを忘れずに!これでHello Worldが表示されるでしょう!!

 

5. 実際に動かしてみよう

それでは実際に動かしてみましょう!

初期画面がこちら!

f:id:mtnanao:20200216132950p:plain

ボタンが表示され、テキストも「PUSH HERE!」に変わっていますね!

ただ、位置は置いた場所とは違いますね。中央寄せは今度やってみましょう。

 

ではボタンをクリック!

f:id:mtnanao:20200216133203p:plain

 

Hello Worldが表示されました! 

位置は中央下段。この位置がデフォルトのようですね。

 

とりあえず1つ目の目標は達成です!

お疲れさまでした!

 

 

代表的なViewGroup

前回ちょこっと出てきた、ViewGroupについてすこしだけまとめておこうと思います。

 

よく使われている物の中から2つほど!

1. LinearLayout

パーツを横一列や縦一列に並べたい時に便利なレイアウトのようですね。

統制の取れたきれいな画面を作るのにはこれがよさそうです。

横に並べていく場合は、orientationにhorizontalを指定。

縦の場合は、verticalを指定します。

 

2. RelativeLayout

相対レイアウトとも言うみたいです。

名前の通り、他の物からの相対的な位置を指定します。

前回理解に苦しんだ中央揃えも、layout_centerInParentにtrueを指定するだけで中央によりますね!簡単!

 

どのViewGroupを使うのかはやりたいことから見極めないといけませんね。

実際に試してみて、色々追記したいと思います!

 

まずはHello World(2)

前回の続きです。

目標は、ボタンからHello Worldの表示です。

やっていきましょう!

 

まずは、前回作成したエミュレータを起動して、

何もいじってないプロジェクトを動かしてみます。

 

[実行] -> [実行'app']

実行結果はこんな感じ

f:id:mtnanao:20200211222656p:plain

 

小さいですが中央にHello Worldの文字が!

どんな仕組みで動いてるのか、少しプロジェクトを見てみます。

 

このクラスでしょうか。MainActivity

f:id:mtnanao:20200211223135p:plain

 

うーん、Hello Worldの文字はありませんね・・・。

あの文字表示はどこに実装されているのでしょうか。

 

検索してみることにします。

Ctrl + Shift + F で検索画面を開いて、Hello Worldっと。

お、出てきましたね。どうやらactivity_main.xml内にありそうです。

f:id:mtnanao:20200211223650p:plain

 

つまり、MainActivity#onCreateで実装されている、

setContetView(R.layout.activity_main) がこのxmlと紐づいて、

アプリの初期画面を表示しているのですね。

 

では、このxmlの中身を見ていきたいと思います。

f:id:mtnanao:20200211225101p:plain

 1行目はViewGroupのタグのようです。今回はConstraintLayoutを使用しています。

他にもLinearLayoutなどがあるみたいです。この辺は追々勉強していきます。

 

5、6行目は、縦と横の長さの指定ですね。

match_parentは表示可能な領域にぴったり表示します。

 

9行目からが文字表示のタグです。

 

10、11行目は文字の表示領域の縦と横の長さ指定です。今度はwrap_context

これは、ちょうどいいサイズに調整してくれるみたいです。

 

12行目は説明不要ですね!表示文字列です。

 

13~16行目は、テキストの位置指定です。これが理解に苦しみました・・・。

layout_constraintBottom_toBottomOf="parent"

 

これは、TextViewのBottom(下端)をparent(ViewGroup)のBottomに揃えるということらしい。

それだと一番下に表示されちゃうのではと思いましたが、Top(上端)にも同じ指定をすることで中央に配置されるみたいです。左右も同様です。

ConstraintLayoutではなく、LinearLayoutとかだともう少し理解しやすいっぽいです。

 

 

また本題に入れませんが、今回はここまでにします。

次回こそはボタンを作って動かします!

 

Kotlinって?

初めて耳にする言語、Kotlin(コトリン)

なんだか可愛い名前ですね!

 

割りと新しい言語らしく、Android開発に正式採用されたのが2017年。

もちろんAndroidStudioでも利用可能!

Java仮想マシン(JVM)上で動作するらしく、Javaと完全互換制もあるだとか!

JavaからKotlinのソースへの変換もAndroidStudioで簡単に出来ちゃうみたいです!

 

Androidの仕組みを理解したら、kotlinも覚えてみようかね!

 

まずはHello World(1)

最初はやっぱりこれでしょ!

Hello World

 

ボタンを押したらHello World!が出るという

何にも面白くないものを作ってみる。

 

まずはエミュレーターが必要みたいです。

Androidアプリなので、AndroidOS上で動かさないといけません。

仮想AndroidOSをWindows上に立ち上げて、そこでアプリを実行していくんですね。

 

[ツール] -> [AVDマネージャー]を選択

f:id:mtnanao:20200210221805p:plain

 

今回は「Phone」の中から適当に選んでみます

f:id:mtnanao:20200210222050p:plain

 

次はシステムイメージの選択です

f:id:mtnanao:20200210222234p:plain

 

Android7から10まで色々ありますがとりあえず最新で。

「Download」のリンクを押すと関連資材ダウンロードが始まりました。

と思ったらエラー、、、。

 

原因は後日調べるとして、今回は一つ下のAndroid9.0で先に進めます。

f:id:mtnanao:20200210224639p:plain

 

よし、いざ起動!

・・・あれ、今度はIntel HAXMを入れなさいと警告。

はい、インストールします。

f:id:mtnanao:20200210225051p:plain

 

Failedって見えますが今度はなに・・・。
このPCは 仮想が使えない状態ってことでしょうか。

 

色々調べてたどり着いたのがここ

f:id:mtnanao:20200210230115p:plain

 

 この「仮想マシンプラットフォーム」にチェックをいれてみた。

PCを再起動して、再挑戦、、、。

 

おお、やっとあがりました。こんな感じです!

f:id:mtnanao:20200210230345p:plain

 

本題に入れてませんが、長くなりそうなので続きは次回に!