【Android Pie】通知を最小化する / 元に戻す

「通知がステータスバーに表示されない」とか「ステータスバーにアイコンを表示する設定に戻したい」ときの設定の手順です。

まず、表示された通知の横スワイプからの通知設定の変更で、「最小化」します。

きっと、この操作を使ってうるさい通知を非表示にしていることでしょう。

しかし、音楽プレーヤーのバックグラウンド再生などのそれを意味するアイコンを表示しておいてほしい場合があります。

その場合の戻し方です。



そのアプリの「アプリ情報」画面などから「通知」を選択してその設定へ。

各選択肢右にあるチェックボックスしか操作の対象でないと思っていたら、項目名もタップが可能でさらに表示される選択ダイアログにて設定できます。

このダイアログ、英語表示だと以下の文言になるけど、おかしくねえですか???

知らんけど。

👉【Android Pie】「通知」設定のシンプルな考え方
👉 How do I unminimize android notifications on P? : AndroidQuestions
👉【公式 2018-05-07】Android Pie のバージョンシェア がやっと 10%超えている件


Android Pie から始まる「ナビゲーションバー」の混乱と操作の覚え方

Android Q beta3 で感じる Navigation Bar (ナビゲーションバー) の方向性

「ナビゲーションバー」というのは、画面下部にある3つのボタン群のことです。

きっと、端末で最も頻繁に使うボタンたちです。

何ができるか

デフォルトで5つの操作ができます。

- ホーム画面の表示
- アシスタントアプリの起動
- 戻る
- アプリドローワー(一覧)の表示
- 最近使ったアプリの一覧表示

ボタンの表示され方

表示のされ方はいくつかあります。

戻る + ホーム + 履歴
(Oreoまでのスタイル)

戻る + ホーム
(Pixel Launcherスタイル)

表示なし (隠れているなど)
(ベンダーカスタムなスタイル)

これは、

- OSバージョン
- 機種
- ナビゲーションの設定
- 端末の状態

によっても変わります。

OSのアップデートや機種変更で表示されるボタンがいきなり変わってしまい操作が混乱します。

覚え方

覚えておくのは、

「右ボタンがなければ(アプリ履歴切り替えは)、中ボタンのスワイプ系操作(上・右)で行う。」

ということぐらいしかありません。

右ボタンが表示されている場合

左ボタン
タップ → 戻る

中ボタン
タップ → ホーム画面の表示
長押し → アシスタントアプリの起動
上スワイプ → アプリドローワーの表示*

右ボタン
タップ→ アプリ履歴表示(切り替え)

右ボタンが表示されていない場合

左ボタン
タップ → 戻る

中ボタン
タップ → ホーム画面の表示
長押し → アシスタントアプリの起動
上スワイプ → アプリ履歴表示*
上ロングスワイプ → アプリドローワーの表示
右スワイプ → 直前のアプリ表示* (P/Qで微妙に異なる)
右スワイプ&ホールド → アプリ切り替え選択* (Pのみ)

ややこしいです。

分かりやすくまとめることができません。

将来は、左の戻るボタンがiPhone のように無くなる噂もあったりして今後も混乱は続きそうです。

👉【Android Pie】「通知」設定のシンプルな考え方
👉 Android Q beta3 で感じる Navigation Bar (ナビゲーションバー) の方向性
👉 Android Pie opens up recent apps customization for third-party launchers
👉【Android Pie】ナビゲーションバー の ホームボタン を ピル型 にする方法
👉 Android 9 Pieの新「ナビゲーションバー」 普及なるか? - ITmedia Mobile
👉【公式 2018-05-07】Android Pie のバージョンシェア がやっと 10%超えている件


【MVVM】 ViewModel の_プロパティ記述

Android Java ではあまり見かけなかったその記述。

Kotlin では、たくさん見かけてはいましたが、
個人的な明示記述小技かと思っていました。


private val _items = MutableLiveData<List<Task>>().apply { value = emptyList() }
val items: LiveData<List<Task>>
    get() = _items


private val _dataLoading = MutableLiveData<Boolean>()
val dataLoading: LiveData<Boolean>
    get() = _dataLoading

android-architecture/TasksViewModel.kt at todo-mvvm-live-kotlin · googlesamples/android-architecture


private val _repositories = MutableLiveData<List<Repo>>()
val repositories : LiveData<List<Repo>>
    get() = _repositories

android - Kotlin: Read Only access of Immutable Type to an Internal Variable of a Mutable Type - Stack Overflow


private val _models = ConflatedBroadcastChannel<Model>()
override val models: ReceiveChannel<Model> get() = _models.openSubscription()

private val _events = Channel<Event>(RENDEZVOUS)
override val events: SendChannel<Event> get() = _events

SdkSearch/SearchPresenter.kt at JakeWharton/SdkSearch

Kotlin公式リファレンスにも書かれていたのですね!

Names for backing properties
If a class has two properties which are conceptually the same but one is part of a public API and another is an implementation detail, use an underscore as the prefix for the name of the private property:


class C {
  private val _elementList = mutableListOf<Element>()
  val elementList: List<Element>
      get() = _elementList
}

Properties and Fields: Getters, Setters, const, lateinit - Kotlin Programming Language

クラス内の処理実装に利用するのが _elementList で、
外部にただ公開するだけのが elementList。

こうやって並べてみると、自然に馴染じめてしまう不思議。

ViewModel作成時のイメージとして持っておくと良い。

👉【Kotlin】バッキング・フィールド/プロパティ
👉【MVVM】ViewModel インスタンスの取得