Android で ダークモード

流行りですか、ダークモード。

Mac Mojave とか Chrome とか、

画面はダークな方面に進んでいるようですが。

How to use Dark Mode on your Mac - Apple Support

本当に目に優しいのかどうかは知らんけども、

バッテリーには間違いなく優しそう。

Android端末でも設定してみましょう。

端末のテーマ


設定 (Settings)

↓

ディスプレイ (Display)

↓

詳細設定 (Advanced)

↓

端末のテーマ (Device Theme)

↓

ダーク (Dark)

これだけでは、変更されなかったり。

以下「夜間モード」と関係を持ちながらテーマ変更されているようです。

夜間モード


設定 (Settings)

↓

システム (System)

↓

詳細設定 (Advanced)

↓

開発者向けオプション (Developer Options)

↓

夜間モード (Night Mode)

↓

常にON



階層が深い「設定」項目は上部検索窓から検索できますが、日本語の場合、それぞれキーワードは

「端末のテーマ」

「夜間モード」

くらいになりそうです。

その他、Chrome など各アプリも個別に対応をしてたり、してなかったり。

微妙です。

👉 Chrome ダークモードの選択しているタブが見づらい 

しかし、

最近の日本語を利用しての検索ワードの選択は難しくなってきてません?

How to enable Android dark mode everywhere it's available - 9to5Google


SQLDelight 1.0 使い方 #1

バージョン1.0アナウンスされています。

Announcing SQLDelight 1.0 – Alec Strong – Medium

神も。


データベース周りにRoom他のライブラリをご利用の方も試してみてはどうでしょうか。

square/sqldelight: Generates typesafe Kotlin APIs from SQL

SQLDelight は、以下のようなSQLステートメントからデータベース、テーブル、タイプセーフなAPIを作成できます。

HockeyPlayer.sq


CREATE TABLE hockeyPlayer (
  player_number INTEGER NOT NULL,
  full_name TEXT NOT NULL
);

CREATE INDEX hockeyPlayer_full_name ON hockeyPlayer(full_name);

INSERT INTO hockeyPlayer (player_number, full_name)
VALUES (15, 'Ryan Getzlaf');

selectAll:
SELECT *
FROM hockeyPlayer;

insert:
INSERT INTO hockeyPlayer(player_number, full_name)
VALUES (?, ?);

定義したAPIは以下のように利用できます。



val driver = AndroidSqliteDriver(Database.Schema, this, "test.db")
val database = Database(driver)
val playerQueries = database.hockeyPlayerQueries

// selectAll
println(playerQueries.selectAll().executeAsList())
// Prints [HockeyPlayer.Impl(15, "Ryan Getzlaf")]

// insert
playerQueries.insert(player_number = 10, full_name = "Corey Perry")
playerQueries.insert(player_number = 999, full_name = "フグ田 サザエ")

// selectAll
println(playerQueries.selectAll().executeAsList())
// Prints [HockeyPlayer.Impl(15, "Ryan Getzlaf"), HockeyPlayer.Impl(10, "Corey Perry")]

利用前の build で build/generated/ 以下に書き出されますが、gradle のバージョンが限定されるように見えました。何か設定が足りないのかもしれません。

gradle-wrapper.properties


distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-all.zip

実際サンプルを動かす風景。



利用方法など今回バージョン1.0 で変わっているようなので、

数回に渡って実装に利用できるとこまでやってみたいと思います。

(つづく...)

SQDelight の データベースバージョン
Reddit: Announcing SQLDelight 1.0 – Alec Strong – Medium
SQLDelight 1.0 使い方 #2


Firebase In-App Messaging は実装不要。

言い換えると、「コードの記述」が不要。

できることは、Firebase 管理画面からアプリ上にプッシュしてダイアログを出せるというもの。

アプリのリソースでの作業は、 build.gradle の以下の記述追加のみ。


dependencies {
  // ...
  implementation 'com.google.firebase:firebase-inappmessaging-display:17.0.0'
  implementation 'com.google.firebase:firebase-core:16.0.1'
}

Firebase アプリ内メッセージングを使ってみる  |  Firebase

あとは、Firebase のコンソールで設定する。

表示させた各ダイアログ(ボタン)をタップしたときのアクションはURLでセットしておく。

あとは表示させるタイミングを設定画面からアレコレやってみるといい。

なんせ、2行の追加だけだもの。

これで撒いといてもいいんじゃね?

ベータだけど。