Android记录24-WebView实现白天/夜间阅读模式
前言
本篇博客給大家分享一個(gè)WebView的使用案例。實(shí)現(xiàn)Android調(diào)用JavaScript代碼來控制白天/夜間模式。
關(guān)于WebView怎樣使用,官網(wǎng)有非常好的說明,Building Web Apps in WebView,小巫這里就不多贅述。
實(shí)現(xiàn)思路
跟Native應(yīng)用不一樣,我們能夠非常easy得實(shí)現(xiàn)調(diào)用系統(tǒng)API來達(dá)到,就是通過樣式設(shè)置主題。
假設(shè)我們的內(nèi)容是html里面的內(nèi)容。怎樣來達(dá)到?首先載入html頁面肯定是要用到WebView的,通過loadUrl的方法能夠把html頁面顯示到webView,我們知道Android能夠與JavaScript進(jìn)行交互。就是說能夠在JavaScript中調(diào)用Android的代碼,也能夠在Android中調(diào)用JavaScript代碼。所以就有了一個(gè)思路就是,通過Android調(diào)用Html頁面中的JavaScript代碼來控制頁面背景和字體樣式來達(dá)到切換白天/黑夜模式。
怎樣實(shí)現(xiàn)
提供一個(gè)供測(cè)試的html代碼
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd";> <html> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><script language=javascript> function load_night() {document.bgColor="#000000"var fontColor = document.getElementById("font");if (!fontColor) {return;}fontColor.style.color="white" } </script><script language="javascript">function load_day(){document.bgColor="#ffffff"var fontColor = document.getElementById("font");if (!fontColor) {return;}fontColor.style.color="black"} </script> <head> <title>webView測(cè)試夜間模式</title> </head><body LEFTMARGIN="10" VLINK="#8000FF" BGCOLOR="#FFFFFF" ALINK="#FF0000" LINK="#0000FF" TOPMARGIN="10" TEXT="#666666"><div id="font">小巫見大巫,小巫見大巫</div></br><button type="button" onClick="load_night()">夜間模式</button><button type="button" onClick="load_day()">白天模式</button> </body> </html>載入html頁面
WebSettings settings = webView.getSettings(); // 設(shè)置javaScript可用 settings.setJavaScriptEnabled(true); webView.loadUrl("file:///android_asset/01.html");Android調(diào)用javascript代碼
@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.btn_nightmode:webView.loadUrl("javascript:load_night()");break;case R.id.btn_lightmode:webView.loadUrl("javascript:load_day()");break;default:break;}}終于效果
完整代碼
package com.infzm.webview;import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Button;public class MainActivity extends Activity implements OnClickListener{private WebView webView;private Button nightModeBtn;private Button lightModeBtn;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);webView = (WebView) this.findViewById(R.id.webview);nightModeBtn = (Button) this.findViewById(R.id.btn_nightmode);lightModeBtn = (Button) this.findViewById(R.id.btn_lightmode);nightModeBtn.setOnClickListener(this);lightModeBtn.setOnClickListener(this);// webView.loadUrl("http://www.baidu.com");WebSettings settings = webView.getSettings();// 設(shè)置javaScript可用settings.setJavaScriptEnabled(true);// 綁定javaScript接口。能夠?qū)嵢缃駄avaScript中調(diào)用我們的Android代碼 // webView.addJavascriptInterface(new WebAppInterface(this), "Android"); // webView.setWebViewClient(new MyWebViewClient());// 載入assets文件夾下的html頁面webView.loadUrl("file:///android_asset/01.html");}/*** 用于控制頁面導(dǎo)航* @author wwj_748**/private class MyWebViewClient extends WebViewClient {/*** 當(dāng)用于點(diǎn)擊鏈接,系統(tǒng)調(diào)用這種方法*/@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {if (Uri.parse(url).getHost().equals("www.baidu.com")) {// 這個(gè)是我的網(wǎng)頁。所以不要覆蓋。讓我的WebView來載入頁面return false;}// 否則,這個(gè)鏈接不是我的站點(diǎn)頁面。因此啟用瀏覽器來處理urlsIntent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));startActivity(intent);return true;}}@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {// 檢查是否為返回事件,假設(shè)有網(wǎng)頁歷史記錄if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {webView.goBack();return true;}// 假設(shè)不是返回鍵或沒有網(wǎng)頁瀏覽歷史,保持默認(rèn)// 系統(tǒng)行為(可能會(huì)退出該活動(dòng))return super.onKeyDown(keyCode, event);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.btn_nightmode:webView.loadUrl("javascript:load_night()");break;case R.id.btn_lightmode:webView.loadUrl("javascript:load_day()");break;default:break;}} }下載地址
http://download.csdn.net/detail/wwj_748/8554833
轉(zhuǎn)載請(qǐng)注明:IT_xiao小巫
博客地址:http://blog.csdn.net/wwj_748
移動(dòng)開發(fā)狂熱者群:299402133
轉(zhuǎn)載于:https://www.cnblogs.com/clnchanpin/p/7221196.html
總結(jié)
以上是生活随笔為你收集整理的Android记录24-WebView实现白天/夜间阅读模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 枚举—C#基础回顾
- 下一篇: 80%的Android手机用户面临浏览器