好久沒寫博客了,還是不能停下覆旱,不然不常用的容易忘記,所以準備繼續(xù)記錄自己所學核无。
現(xiàn)在許多應用都支持更換主題,比如扣扣藕坯,網(wǎng)易云音樂团南。我所知道的流行換膚框架有Android-Skin-Loader和Android-skin-support還有Colorful噪沙。大家有興趣在項目中添加換膚功能的可以去研究學習下這些框架。
不過從酷市場的開源相關中并未看到換膚相關的框架吐根,當然了正歼,嚴格上這個不能稱之為換膚,酷市場里叫做主題風格拷橘。
其實我是在很久之前看過一篇文章局义,是講夜間模式的簡單實現(xiàn)。當時只是隨意看了下源碼冗疮,知道是Android支持包引入的新能力就放下了萄唇,現(xiàn)在做下記錄一面忘記。
先看一下酷市場的界面:
AppCompatDelegate是一個委托代表术幔,它將AppCompatActivity的特性提供給Activity另萤。
我們來看AppCompatActivity源碼,可以看到在oncreate時進行創(chuàng)建實例:
然后我們就可以通過 AppCompatDelegate來切換夜間模式和toolbar顏色诅挑。
先看我們的界面以及效果吧:
首先是 夜間模式的切換:
新建values-night:
我們這里只以主題顏色為例四敞,新建colors資源文件:
在代碼中實現(xiàn)模式切換:
而單純的toolbar顏色的更改比較簡單,直接給toolbar設置背景顏色即可拔妥,在實際效果中酷市場有過度效果忿危,實現(xiàn)起來也很簡加個動畫即可:
ObjectAnimator objectAnimator = ObjectAnimator.ofInt(toolbar, "backgroundColor", SharePrefs.getInt(MainActivity.this, "toolBarColor", bean.getColorRes()), bean.getColorRes());
objectAnimator.setDuration(500);
objectAnimator.setEvaluator(new ArgbEvaluator());objectAnimator.start();