3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Kotlin + Firebaseで作るチャットアプリ入門2

Posted at

#1 おさらい
Kotlin + Firebaseで作るチャットアプリ
ベースはすでに完成したので徐々に書いていきます。
細かいソースの内容はGitHubをどうぞ

その1
GitHub

#2 今回やること
前回はサインアップの画面を作ったので
サインインの画面とサインイン成功時の遷移先の画面を作ります。

###2-1 手始め
アプリとは関係ありませんが、Dockerを最近勉強し始めました。
そのため、Hyper‐Vとかの関係でがDockerとAndroidエミュレーターが喧嘩してうまく動かない事態に
なのでWindowsの機能でWindowsハイパーバイザープラットフォームを有効化しておきます。
→これをやってるとDockerもAndroidエミュレーターも動きます。

###2-2 サインイン画面

Android Emulator - Pixel_2_API_28_5554 2019_01_20 16_57_18.png

画面的には簡単にEmailとPasswordのテキストボックスを配置
ログインのボタンはボタンの部品を配置した後、android:background="@drawable/rounded_button"
といった感じに別ファイルで定義したスタイルを適用している感じです。
ちなみにrounded_buttonは以下のような感じです。

rounded_button.xml
<?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経由で簡単にできるようになっています。

LoginActivity.kt
//ログイン
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 直近のメッセージ一覧の画面
何というか迷ったがとりあえずこの呼称で行く
Android Emulator - Pixel_2_API_28_5554 2019_01_20 17_13_01.png

この画面はパーツが大きく分けて
・メッセージの一覧を受け入れる母体(activity_latest_messages.xml)
・メッセージの行(写真+名前+最近のメッセージ)(latest_message_row.xml)
・画面上部のツールバーみたいなの(onCreateOptionsMenuでnav_menu.xmlを設定)
といったつくりになってます。
→NewMessageはLineでいう新規のトーク、サインアウトは読んで字のごとくです。

処理的にはFireBaseのRealtimeDatabaseから情報を取得して
レコード毎に画面に表示させていってる感じです。
画像はfromId,toIdに紐づく、usersのディレクトリから画像の保存先を再取得してるかんじです。
kotlinmessenger – Database – Firebase console - Google Chrome 2019_01_20 17_29_14.png

kotlinmessenger – Database – Firebase console - Google Chrome 2019_01_20 17_22_00.png

DB周りの処理もSDK経由でできます。
めっちゃ便利ですね。

#3 次回
NewMessageの画面の予定です。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?