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 のアプリ 


この時期、「アラビヤン 焼きそば」から自炊を始めるのもいいぞ?

袋麺です。

粉末ソース、青のり付きです、

アラビヤン 焼きそば

沸騰したお湯に入れて、両面1分ずつです。

目玉焼きも並行して作ります。

アラビヤン 焼きそば

目玉焼きも同時に焼き上がります。
アラビヤン 焼きそば

ソースを混ぜて、青のりと目玉焼きをのせて出来上がりです、

アラビヤン 焼きそば

やっぱ、紅しょうが があったほうがいいね?


サッポロ一番 袋めん アラビヤン焼そば


メモリーリークを防ぐには欠かせない Lifecycle Observer は remove/unregister 不要

「不要」というより「自動」なので超便利。

ここでは、addObserver()の呼び出しはありますが、onDestroyのremoveObserver()の呼び出しはありません。これは意図的なものでしょうか?

LifeCycle Observer は remove/unregister 不要

👉 BoundLocationManager.java at googlecodelabs 

ライフサイクルを考慮した新しいコンポーネントの良い点は、Observer の解除や削除が不要なことです。

👉 Lifecycle Observer is not removed in step_4 · Issue #5 · googlecodelabs/android-lifecycles 


// no need to unsubscribe/remove observers
lifecycleOwner.lifecycle.addObserver(object : DefaultLifecycleObserver {
  override fun onDestroy(owner: LifecycleOwner) {
    container.removeAllViews()
  }
})

拡張関数などでも便利に使えそうです。

👉 LeakCanary 


【Homebrew】git が2つある場合 【macOS】

git homebrew macos

👉 Re-installing Git on Mac OSX with Brew 

状況確認


~ % which git
/usr/local/bin/git

~ % git --version
git version 2.33.0

~ % which -a git 
/usr/local/bin/git
/usr/bin/git

~ % for i in $(which -a git); do echo -n "${i}:  "; ${i} --version; done
/usr/local/bin/git:  git version 2.33.0
/usr/bin/git:  git version 2.32.0 (Apple Git-132)

~ %  cat /etc/paths
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

~ % sudo rm -rf /usr/bin/git
Password:
rm: /usr/bin/git: Operation not permitted

私の mac には2つの git パッケージがインストールされている。


sudo rm -rf /usr/bin/git wont work for El Capitan due to SIP restriction

削除しようとしても macOS側の git は消せない。

通常、残しておくしかない。

対応方法

実行するときの git を Homebrew側に向けておく必要がある。

以下3つのどれかを、bash でも zsh でも起動スクリプトに追加する。


export PATH=$PATH:/usr/local/bin/git


export PATH=/user/local/bin:$PATH


alias git="/usr/local/bin/git"

AndroidStudio の git 不具合のときに少し気になったのでメモ。

👉 Cannot Run Git : Cannot identify version of git executable: no response – on startup