#1 おさらい
Kotlin + Firebaseで作るチャットアプリ
ベースはすでに完成したので徐々に書いていきます。
細かいソースの内容はGitHubをどうぞ
#2 今回やること
前回はサインアップの画面を作ったので
サインインの画面とサインイン成功時の遷移先の画面を作ります。
###2-1 手始め
アプリとは関係ありませんが、Dockerを最近勉強し始めました。
そのため、Hyper‐Vとかの関係でがDockerとAndroidエミュレーターが喧嘩してうまく動かない事態に
なのでWindowsの機能でWindowsハイパーバイザープラットフォームを有効化しておきます。
→これをやってるとDockerもAndroidエミュレーターも動きます。
###2-2 サインイン画面
画面的には簡単にEmailとPasswordのテキストボックスを配置
ログインのボタンはボタンの部品を配置した後、android:background="@drawable/rounded_button"
といった感じに別ファイルで定義したスタイルを適用している感じです。
ちなみにrounded_buttonは以下のような感じです。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@android:color/holo_green_dark"/>
<corners android:radius="25dp"/>
</shape>
ログインの機能については、FireBaseのAuthenticationを使用しています。
機能についてはSDK経由で簡単にできるようになっています。
//ログイン
FirebaseAuth.getInstance().signInWithEmailAndPassword(email, password)
.addOnCompleteListener {
Log.d(TAG, "Successfully signInWithEmailAndPassword")
val intent = Intent(this, LatestMessagesActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK.or(Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(intent)
}
.addOnFailureListener {}
###2-3 直近のメッセージ一覧の画面
何というか迷ったがとりあえずこの呼称で行く
この画面はパーツが大きく分けて
・メッセージの一覧を受け入れる母体(activity_latest_messages.xml)
・メッセージの行(写真+名前+最近のメッセージ)(latest_message_row.xml)
・画面上部のツールバーみたいなの(onCreateOptionsMenuでnav_menu.xmlを設定)
といったつくりになってます。
→NewMessageはLineでいう新規のトーク、サインアウトは読んで字のごとくです。
処理的にはFireBaseのRealtimeDatabaseから情報を取得して
レコード毎に画面に表示させていってる感じです。
画像はfromId,toIdに紐づく、usersのディレクトリから画像の保存先を再取得してるかんじです。
DB周りの処理もSDK経由でできます。
めっちゃ便利ですね。
#3 次回
NewMessageの画面の予定です。