Day/Night テーマ切替時に Vector Drawables アイコンの色を自動変更させたい

Vector Drawableの各パスの色は、XML形式の一部として


android:fillColor="..."

という形式で定義されています。

これは、


android:fillColor="@color/colorPrimary"

などのカラーリソース や、


android:fillColor="?attr/colorControlNormal"

などのテーマ属性 に対応しています。


<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportHeight="24.0"
    android:viewportWidth="24.0">
    <path
        android:fillColor="?attr/colorControlNormal"
        android:pathData="M12,12m-3.2,0a3.2,3.2 0,1 1,6.4 0a3.2,3.2 0,1 1,-6.4 0" />
    <path
        android:fillColor="?attr/colorControlNormal"
        android:pathData="M9,2L7.17,4H4c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2V6c0,-1.1 -0.9,-2 -2,-2h-3.17L15,2H9zm3,15c-2.76,0 -5,-2.24 -5,-5s2.24,-5 5,-5 5,2.24 5,5 -2.24,5 -5,5z" />
</vector>

colorControlNormal 属性は Day/Night テーマのデフォルトです。

👉 Combining Vector Drawables with Day/Night Theme | by Tim Mutton | Medium 

 

まとめ

以下のように、Day/Night テーマ変更時にアイコンの色を変化させるには、

Day/Night theme Vector Drawables

Vector Drawable 内


<path
    android:fillColor="?attr/colorControlNormal"
    ...

とするとよい。


手袋外さずにスマホ操作したいのだが

わざわざ、そんな手袋を買うのもなんだかな。



ランニンググローブ アウトドアグローブ 防寒手袋 ***タッチパネル対応*** 登山 ジョギング サイクリング ハイキング クライミング 通勤通学 秋冬用

タッチペンを100均で買いました!

タッチペン 100均

へんな鈴と合わせて200円でした!

使ってみました。

こんなかんじです。



使い勝手は、

ペン操作に慣れてないせいか

まあまあですが

寒くないので良いですよ!

👉 顔文字/絵文字辞書 単語リスト - Google Play のアプリ 


Rx の Hot が扱うのは State か Event か

RxのHotとColdについて
👉 RxのHotとColdについて - Qiita 

 

なかなか理屈ではくっきり区別しづらくなってきたような気がしています。

kotlin や swift でいうところの

Rx の Hot。

検索キーワードとして

ざっくりと2つに分ける。

 

State


ConflatedBroatcastChannel (Kotlin - Channel)

  ↓

StateFlow (Kotlin - Flow)


BehaviorSubject (RxSwift/RxJava)

  ↓

BehaviorRelay (RxRelay/RxCoCoa)

  ↓

Driver (RxCocoa)

 

Event


BroadcastChannel (Kotlin - Channel)

  ↓

SharedFlow (Kotlin - Flow)


PublishSubject (RxSwift/RxJava)

  ↓

PublishRelay (RxRelay/RxCoCoa)

  ↓

Signal (RxCocoa)

 

まとめ

最近では日本語だけの検索では情報が足りません。

iOS ↔ Android 間の意味合いを考えながら、

まずは、

扱うのが State か Event か、を区別すると理解しやすいと思います。

 

👉 com.jakewharton.rxrelay2 (RxRelay 2.0.0 API) 
👉 ReactiveX/RxSwift: Reactive Programming in Swift 
👉 【RxSwift】BehaviorRelayとPublishRelayについてまとめてみた 
👉 RxSwiftのSubjectとRelayについて理解する - Qiita 
👉 関数型プログラマのための Rx 入門(前編) - Okapies' Archive 
👉 RxSwift/RxRelay at main · ReactiveX/RxSwift 
👉 RxSwift(RxCocoa) における Subject・Relay を理解する - iOSエンジニアのつぶやき 
👉 「Rx」の検索結果 - Qiita 

👉 [B!] Rx の Hot が扱うのは State か Event か