WebView使用(二)

接著第一篇,我來繼續(xù)完善我的瀏覽器界面。

1.增加前進(jìn)和返回按鈕

當(dāng)前界面我們?cè)诰W(wǎng)頁里點(diǎn)擊一個(gè)新聞之后,點(diǎn)擊返回,我們會(huì)退出界面。我們希望能回到之前我們?yōu)g覽的界面。

        mBackBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(mWebView.canGoBack()){
                    mWebView.goBack();
                }
            }
        });
        mNextBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(mWebView.canGoForward()){
                    mWebView.goForward();
                }
            }
        });```
###2.WebSettings的常用設(shè)置
WebSettings  setting=mWebView.getSettings();

   1.如何將webview中如何控制縮放
       ```
       settings.setSupportZoom(true);  
       settings.setBuiltInZoomControls(true);
      // 這時(shí)候右下角會(huì)顯示一個(gè)縮放的圖標(biāo),去掉圖標(biāo)
       settings.setDisplayZoomControls(false);```
   2.支持js腳本,一般的網(wǎng)頁都會(huì)有腳本文件。
      ``` webSettings.setJavaScriptEnabled(true); ```
      js就像android和頁面的橋梁,可以讓內(nèi)容運(yùn)行在頁面或者是android應(yīng)用中,js中調(diào)用android中代碼,android也可以調(diào)用頁面中的js代碼。

調(diào)用android代碼:
在JS和Android代碼間綁定一個(gè)新的接口
addJavascriptInterface(java.lang.Object, java.lang.String))
       例子:

setting.setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new TestJSObject(this), "testJsObject");```

class TestJSObject{
    private Context mContext;
    public TestJSObject(Context context){
        mContext=context;
    }
    @JavascriptInterface
    public void hello(String toast){
        Toast.makeText(mContext,toast,Toast.LENGTH_LONG).show();
    }
}```
html的內(nèi)容

<html >
<head>
<script type="text/javascript">
//調(diào)用android中中方法
function testAndroidContent(toast){
testJsObject.hello(toast);//看這里的調(diào)用
}
function jsToAndroidContent(){
alert("大家好,我來自js腳本");
}
</script>
</head>
<body>
<button onclick="testAndroidContent('看這里看這里');">點(diǎn)擊顯示android中的方法調(diào)用</button>
</body>
</html>```
android調(diào)用js方法
在webview中定義一個(gè)button

findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mWebView.loadUrl("javascript:jsToAndroidContent()");
            }
        });```
3.webview緩存
   之前由于項(xiàng)目需要,研究一下webview緩存的相關(guān)信息,發(fā)現(xiàn)在不同手機(jī)不同android系統(tǒng)上的緩存目錄并不相同,獲取默認(rèn)保存過的緩存文件意義不大。我也參考過網(wǎng)上小豬博客的緩存目錄,因?yàn)槟夸洸灰恢?,而且文件類型也無從得知,而且還需要有root權(quán)限,所以后來就沒再研究過。當(dāng)然我們可以使用模擬器看data目錄。
緩存分類:
·頁面緩存:對(duì)整個(gè)頁面的緩存。
·數(shù)據(jù)緩存(針對(duì)頁面的內(nèi)容做緩存appcache,Domstorage)

緩存的模式有三種

- LOAD_CACHE_ONLY: 不使用網(wǎng)絡(luò),只讀取本地緩存數(shù)據(jù)
- LOAD_DEFAULT: 根據(jù)cache-control決定是否從網(wǎng)絡(luò)上取數(shù)據(jù)。
- LOAD_NO_CACHE: 不使用緩存,只從網(wǎng)絡(luò)獲取數(shù)據(jù).
- LOAD_CACHE_ELSE_NETWORK,只要本地有,無論是否過期,或者no-cache,都使用緩存中的數(shù)據(jù).

開啟緩存開關(guān)

setting.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);```

然后當(dāng)我們斷網(wǎng)之后,點(diǎn)擊重新加載,依然能看到之前訪問過的網(wǎng)頁。

appCache和domstorage 沒明白,用網(wǎng)上的例子指定路徑后并沒有生成對(duì)應(yīng)的文件夾,說明沒有生成緩存文件。期待明白人給講講。
列一下內(nèi)容

//設(shè)置數(shù)據(jù)庫緩存路徑 mWebView.getSettings().setDatabasePath(cacheDirPath); 
//設(shè)置 應(yīng)用 緩存目錄 mWebView.getSettings().setAppCachePath(cacheDirPath); 
//開啟 DOM 存儲(chǔ)功能 mWebView.getSettings().setDomStorageEnabled(true); 
//開啟 數(shù)據(jù)庫 存儲(chǔ)功能 mWebView.getSettings().setDatabaseEnabled(true); 
//開啟 應(yīng)用緩存 功能 mWebView.getSettings().setAppCacheEnabled(true);```

緩存的路徑是在data/data/包名/cache/下,具體里面內(nèi)容不太一樣。

清除緩存,用別人的的總結(jié)。
-  setting.setCacheMode(WebSettings.LOAD_NO_CACHE);
- deleteDatabase("WebView.db");deleteDatabase("WebViewCache.db");//因?yàn)橛械木彺鏇]有這種文件,覺得這個(gè)不太靠譜
- webView.clearHistory();
- webView.clearFormData();
- getCacheDir().delete();
- 手動(dòng)寫delete方法,循環(huán)迭代刪除緩存文件夾!

參考地址:
http://www.runoob.com/w3cnote/android-tutorial-webview-cache.html

webview 兩篇總結(jié)完畢。再用再追加吧。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容