真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何進行Android中夜間模式開發(fā)淺析

本篇文章為大家展示了如何進行Android中夜間模式開發(fā)淺析,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

張掖網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應式網(wǎng)站設(shè)計等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)成立與2013年到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

前言

Android的夜間模式主要主用于閱讀方面,在QQ,微信讀書,新聞閱讀類一般會有相應的功能,下面主要介紹整體APP的夜間模式以及webview中夜間模式的實現(xiàn)。

效果圖展示

如何進行Android中夜間模式開發(fā)淺析  如何進行Android中夜間模式開發(fā)淺析

功能實現(xiàn)簡介

APP的夜間模式有兩種方式:

1、通過切換theme來實現(xiàn)夜間模式。2、通過修改uiMode來切換夜間模式。

修改uimode是修改Configuration,這種主題切換只限于黑白模式,沒有其他模式,不需要大量定義主題,即本文介紹的內(nèi)容。

webview這個是通過改變HTML代碼來實現(xiàn)的,我們一個一個的來講。

application夜間模式代碼詳解

首先記載依賴:compile 'com.android.support:appcompat-v7:24.0.0',然后Activity須繼承AppCompatActivity。這兩個應該是硬性要求哦,我在網(wǎng)上查到的。

關(guān)于xml的一些準備工作

采用這種方法切換夜間模式,其實就是動態(tài)變換xml的背景色。


這是toolbar的布局文件,主要看顏色的處理,這里邊顏色一定要引用color資源文件下的顏色。注意哦,一定不可以直接寫顏色代碼,一定不行?。?!我在初學android的時候,基本不管這些封裝的,剛開始就是覺得費勁,直接把顏色代碼寫上不就好了,#FFF或者其他顏色代碼,簡單明了。這次我才發(fā)現(xiàn)看來封裝是真的有用??匆幌耤olor文件吧。



    #0099FF
    #4b4b58
    #FF4081
    #E0E0E0
    #FFFFFF
    #FFFFFF
    #F3F3F3
    #00A2ED
    #4b4b58
    #FFFFFF
    #FFFFFF

注意toolbar用到的colorPrimary以及textColorPrimary,都有在color文件中定義。然后需要注意的是你還需要另外定義一份夜間使用的資源顏色 values—night,放在res文件夾下面如圖

如何進行Android中夜間模式開發(fā)淺析

注意:values—night下面也有colorPrimary以及textColorPrimary。但是顏色值不一樣,當點擊切換夜間模式的時候,android會自動從values—night下面取值
還有一點需要注意:APP的主題一定要是DayNight下的

 
        
        @color/colorPrimary
        @color/colorPrimaryDark
        @color/colorAccent
        @color/colorPrimary

    
 Java代碼實現(xiàn)
 public boolean onMenuItemClick(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.action_switch_model:
                int mode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;

                if (mode == Configuration.UI_MODE_NIGHT_YES) {
                    AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
                } else {
                   
                    AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
                }
              
                recreate();

        }
        return false;
    }

這里我是在菜單欄中實現(xiàn)切換的,菜單欄不必詳說。主要是看點擊事件里的代碼詳解:
AppCompatDelegate.setDefaultNightMode(int mode);用于適配全局主題
model它有四個可選值,分別是:
MODE_NIGHT_NO: 使用亮色(light)主題,不使用夜間模式
MODE_NIGHT_YES:使用暗色(dark)主題,使用夜間模式
MODE_NIGHT_AUTO:根據(jù)當前時間自動切換 亮色(light)/暗色(dark)主題
MODE_NIGHT_FOLLOW_SYSTEM(默認選項):設(shè)置為跟隨系統(tǒng),通常為 MODE_NIGHT_NO
這里我們主要采用YES和NO兩種主題, int mode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;用于獲取現(xiàn)在的主題。

webview中的夜間模式

我這個方法不通用,但是理念是一樣的,都需要注入css代碼,改變HTML中的樣式,因為HTML的整體樣式都歸于css管理。這次webview從json數(shù)據(jù)中獲取了整體HTML的代碼,通過setdata方法加載,詳細用法看鏈接http://www.jianshu.com/p/7d93d72390ec
這次我在css代碼后面加上了字符串"",代碼如下:

public static String createHtmlData(String html, List cssList, List jsList) {
        final String css = HtmlUtil.createCssTag(cssList)+ "";
        final String js = HtmlUtil.createJsTag(jsList);
        Log.i("CSS123",css);
        Log.i("CSS125",html);
        Log.i("CSS124",js);
        return css.concat(HIDE_HEADER_STYLE).concat(html).concat(js);
    }

上述內(nèi)容就是如何進行Android中夜間模式開發(fā)淺析,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


標題名稱:如何進行Android中夜間模式開發(fā)淺析
網(wǎng)頁URL:http://weahome.cn/article/gssgjs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部