日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android之WebView学习

發布時間:2024/7/23 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android之WebView学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

WebView常用方法

WebSettings

在使用WebView前我們都要進行相關的配置,常見的操作如下:

WebSettings settings = mWebView.getSettings();settings.setJavaScriptEnabled(true); //支持javascriptsettings.setUseWideViewPort(true); //設置webview推薦使用的窗口,使html界面自適應屏幕settings.setLoadWithOverviewMode(true); //縮放至屏幕的大小settings.setAllowFileAccess(true); //設置可以訪問文件 // settings.setDefaultZoom(WebSettings.ZoomDensity.MEDIUM); //設置中等像素密度,medium=160dpisettings.setSupportZoom(true); //設置支持縮放settings.setLoadsImagesAutomatically(true); //設置自動加載圖片 // settings.setBlockNetworkImage(true); //設置網頁在加載的時候暫時不加載圖片 // settings.setAppCachePath(""); //設置緩存路徑settings.setCacheMode(WebSettings.LOAD_NO_CACHE); //設置緩存模式

WebChromeClient

WebChromeClient主要是輔助WebView處理Javascript的對話框,網站圖標,網站title,加載進度等。

mWebView.setWebChromeClient(new WebChromeClient() {@Overridepublic void onReceivedTitle(WebView view, String title) {super.onReceivedTitle(view, title);mTitle.setText(title);}@Overridepublic void onProgressChanged(WebView view, int newProgress) {super.onProgressChanged(view, newProgress);if (newProgress == 100) {mProgressBar.setVisibility(View.GONE);}mProgressBar.setProgress(newProgress);}});

WebViewClient

WebViewClient用來輔助WebView處理各種通知、請求事件的,例如在WebView中點擊請求新的鏈接、頁面加載開始、結束等:

mWebView.setWebViewClient(new WebViewClient() {@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {return true;}@Overridepublic void onPageStarted(WebView view, String url, Bitmap favicon) {super.onPageStarted(view, url, favicon);}@Overridepublic void onPageFinished(WebView view, String url) {super.onPageFinished(view, url);}});

上\下一個頁面

private void goBack(){if (mWebView.canGoBack()){mWebView.goBack();}else{finish();}}private void goForward() {if (mWebView.canGoForward()) {mWebView.goForward();}}

就是通過WebView的goBack()、goForward()方法。

下載

mWebView.setDownloadListener(new DownloadListener() {@Overridepublic void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype,long contentLength) {}});

java與js交互

首先編寫一個簡單的H5:

<!DOCTYPE html> <html> <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>js test</title> </head><script type="text/javascript">function click1(){window.client.showMessage("來自js的消息");}function click2(msg){alert("來自java代碼的消息:" + msg)}</script> <body><input id="one" type="button" value="js調用java代碼" onclick="click1()"style="width:300px; height:150px; font-size:35px"/> </body> </html>

內容很簡單,兩個函數click1、click2,一個按鈕,點擊按鈕執行click1函數。

將改H5文件放到assets目錄,之后用WebView加載改H5:

mWebView.loadUrl("file:///android_asset/test.html");

接下來在Activity中編寫一個特殊的類:

class JsOperation {@JavascriptInterfacepublic void showMessage(String msg) {Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();}}

然后注入到WebView中:

mWebView.addJavascriptInterface(new JsOperation(), "client");

注意和js中的這行代碼對比下:

window.client.showMessage("來自js的消息");

其中client就是addJavascriptInterface()的第二個參數,當然這個參數可以自定義,但要保持一致。js中調用的showMessage()方法,就是我們JsOperation類中的方法。

點擊H5中的按鈕,可以看到一個Toast提示:

到這里就完成了js對java代碼的調用,接下來看如下通過java代碼調用js。
其實很簡單:

mWebView.loadUrl("javascript:click2" + "(" + 1008611 + ")");

這樣就可以執行js中的click2函數了。我們通過模擬器返回鍵執行這行代碼,可以看到一個提示框,即click2函數得到執行:

模擬原生應用的頁面跳轉

效果

首先可以在Activity的onCreate()中創建一個棧,并將當前Activity入棧:

if (mStack == null) {mStack = new Stack<>();}mStack.push(this);

在WebView中繼續加載新頁面時:

@Override public boolean shouldOverrideUrlLoading(WebView view, String url) {Intent intent = new Intent(MainActivity.this, MainActivity.class);intent.putExtra("url", url);startActivity(intent);return true;}

我們重寫了shouldOverrideUrlLoading(),重新啟動當前Activity來加載新鏈接,則一個新的Activtiy會入棧,這樣就有了跳轉的效果。
在返回上一個界面時進行出棧操作:

private void popActivity() {if (mStack.size() > 0) {mStack.remove(this);this.finish();}}

源碼

源碼

參考鏈接

Android 你應該知道的WebView - 簡書

總結

以上是生活随笔為你收集整理的Android之WebView学习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。