欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Android中WebView怎么用-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了“Android中WebView怎么用”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學習一下“Android中WebView怎么用”這篇文章吧。

創(chuàng)新互聯(lián)是一家做網(wǎng)站、網(wǎng)站建設(shè),提供網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,網(wǎng)站制作,建網(wǎng)站,按需網(wǎng)站制作,網(wǎng)站開發(fā)公司,于2013年創(chuàng)立是互聯(lián)行業(yè)建設(shè)者,服務(wù)者。以提升客戶品牌價值為核心業(yè)務(wù),全程參與項目的網(wǎng)站策劃設(shè)計制作,前端開發(fā),后臺程序制作以及后期項目運營并提出專業(yè)建議和思路。

簡介

WebView是一個基于webkit引擎、展現(xiàn)web頁面的控件。

Android的Webview在低版本和高版本采用了不同的webkit版本內(nèi)核,4.4后直接使用了Chrome。

作用

  • 顯示和渲染W(wǎng)eb頁面

  • 直接使用html文件(網(wǎng)絡(luò)上或本地assets中)作布局

  • 可和JavaScript交互調(diào)用

WebView控件功能強大,除了具有一般View的屬性和設(shè)置外,還可以對url請求、頁面加載、渲染、頁面交互進行強大的處理。

Android中WebView怎么用

混合開發(fā)相關(guān)博客:

  • Android混合開發(fā)之WebView使用總結(jié)

  • Android混合開發(fā)之WebView與Javascript交互

使用場景:

 1.)添加權(quán)限

<uses-permission android:name="android.permission.INTERNET" />

 2.)布局文件

 <WebView
 android:id="@+id/webView"
 android:layout_width="match_parent"
 android:layout_height="match_parent" />

 3.)數(shù)據(jù)加載

 加載本地資源

webView.loadUrl(file:///android_asset/example.html);

 加載網(wǎng)絡(luò)資源

webView.loadUrl(www.xxx.com/index.html);

 添加請求頭信息

Map<String,String> map=new HashMap<String,String>();
map.put("User-Agent","Android");
webView.loadUrl("www.xxx.com/index.html",map);

也可以加載html片段

 String data = " Html 數(shù)據(jù)";
 webView.loadData(data, "text/html", "utf-8");

實測會發(fā)現(xiàn)loadData會導致中文亂碼,所以一般情況使用如下代碼

String data = " Html 數(shù)據(jù)";
webView.loadDataWithBaseURL(null,data, "text/html", "utf-8",null);

4.)支持JavaScript

     比如項目總js觸發(fā)一個native函數(shù)關(guān)閉Activity

    設(shè)置支持JavaScript

 WebSettings webSettings = webView.getSettings();
 webSettings.setJavaScriptEnabled(true);//設(shè)置支持javascript
 webView.addJavascriptInterface(new JavaScriptInterface(), "xueleapp");

 JavaScriptInterface 接口定義

public class JavaScriptInterface {
 @android.webkit.JavascriptInterface
 public void doTrainFinish() {
 finish();
 }
 }

5.)設(shè)置WebViewClient 主要輔助WebView處理各種通知、請求事件

比如要實現(xiàn)WebView中鏈接在WebView內(nèi)部跳轉(zhuǎn)

webView.setWebViewClient(new WebViewClient() {
 public boolean shouldOverrideUrlLoading(WebView view, String url) {
 view.loadUrl(url);
 return true;
 }
 });

除此之外WebViewClient更多的處理網(wǎng)頁的地址的解析和渲染,例如

      onLoadResource//加載資源時響應
  onPageStart//在加載頁面時響應
  onPageFinish//在加載頁面結(jié)束時響應
  onReceiveError//在加載出錯時響應
  onReceivedHttpAuthRequest//獲取返回信息授權(quán)請求

  6.)設(shè)置WebChromeClient主要輔助WebView處理Javascript的對話框,網(wǎng)站圖標,網(wǎng)站title,加載進度等

   比如加載進度獲取title

webView.setWebChromeClient(new WebChromeClient() {
 @Override
 public void onProgressChanged(WebView view, int newProgress) {
 if (newProgress == 100) {
  //網(wǎng)頁加載完成
 } else {
  //網(wǎng)頁加載中
 }
 }
 });

除了上面檢測進度之外還有

  onCloseWindow//關(guān)閉WebView
  onCreateWindow() //觸發(fā)創(chuàng)建一個新的窗口
  onJsAlert //觸發(fā)彈出一個對話框
  onJsPrompt //觸發(fā)彈出一個提示
  onJsConfirm//觸發(fā)彈出確認提示
  onProgressChanged //加載進度
  onReceivedIcon //獲取網(wǎng)頁icon
  onReceivedTitle//獲取網(wǎng)頁title

 7.)設(shè)置網(wǎng)頁棧返回

    webview會默認把瀏覽過去的網(wǎng)頁進行壓棧存儲,所以我們有時需要實現(xiàn)回退到上一目錄

@Override
 public boolean onKeyDown(int keyCode, KeyEvent event) {
 if (keyCode == KeyEvent.KEYCODE_BACK) {
 if (webView.canGoBack()) {
 webView.goBack();//返回上一瀏覽頁面
 return true;
 } else {
 finish();//關(guān)閉Activity
 }
 }
 return super.onKeyDown(keyCode, event);
 }

8.)WebView 緩存控制

  • LOAD_CACHE_ONLY: 不使用網(wǎng)絡(luò),只讀取本地緩存數(shù)據(jù)

  • LOAD_DEFAULT: 根據(jù)cache-control決定是否從網(wǎng)絡(luò)上取數(shù)據(jù)。

  • LOAD_CACHE_NORMAL: API level 17中已經(jīng)廢棄, 從API level 11開始作用同LOAD_DEFAULT模式

  • LOAD_NO_CACHE: 不使用緩存,只從網(wǎng)絡(luò)獲取數(shù)據(jù).

  • LOAD_CACHE_ELSE_NETWORK,只要本地有,無論是否過期,或者no-cache,都使用緩存中的數(shù)據(jù)。

WebSettings webSettings = webView.getSettings();
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);

9.)WebView屏幕自適應

 WebSettings webSettings = webView.getSettings();
 webSettings.setUseWideViewPort(true);
 webSettings.setLoadWithOverviewMode(true);

 10.)其他不常用設(shè)置

WebSettings webSettings = webView.getSettings();
 webSettings.setSupportZoom(true); //支持縮放
 webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); //支持內(nèi)容重新布局
 webSettings.supportMultipleWindows(); //多窗口
 webSettings.setAllowFileAccess(true); //設(shè)置可以訪問文件
 webSettings.setNeedInitialFocus(true); //當webview調(diào)用requestFocus時為webview設(shè)置節(jié)點
 webSettings.setBuiltInZoomControls(true); //設(shè)置支持縮放
 webSettings.setJavaScriptCanOpenWindowsAutomatically(true); //支持通過JS打開新窗口
 webSettings.setLoadsImagesAutomatically(true); //支持自動加載圖片

11.)知識擴展WebViewJSBridge

雖然谷歌也提供了js與native函數(shù)互相調(diào)用的方式,但是通過addjavascriptInterface這種方式在Android 4.2以下版本存在一定的安全隱患,在Android 4.2以上也需要加@JavascriptInterface注解,否則無法調(diào)用。基于上面的原因建議學習一下

WebViewJSBridge這個比較不錯的開源框架,地址:https://github.com/firewolf-ljw/WebViewJSBridge

12.)硬件加速

 開啟硬件加速強制使用GPU渲染,確實給app流暢度帶來不小的提升,但是在使用過程中遇見webview閃爍,也有導致加載webView黑屏或者白屏

解決辦法:關(guān)閉硬件加速

 webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

 這是把webview 中的硬件加速關(guān)閉。設(shè)置LAYER_TYPE_SOFTWARE后會把當前view轉(zhuǎn)為bitmap保存。這樣就不能開多個webview,否則會報out of memory。

需要在在webview中加入如下代碼

 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
 invalidate();
 super.onMeasure(widthMeasureSpec, heightMeasureSpec);
 }

以上是“Android中WebView怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

新聞名稱:Android中WebView怎么用-創(chuàng)新互聯(lián)
標題URL:http://aaarwkj.com/article36/icgpg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號軟件開發(fā)、做網(wǎng)站網(wǎng)站制作、品牌網(wǎng)站制作域名注冊

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司
国产精品亚洲欧美日韩综合| 国产三级三级三级三级三级| 国产亚洲精品久久久9| 久久亚洲av麻衣北条麻妃| 国产精品国产三级国产专播精品| 一区二区三区午夜激情| 色噜噜男人的天堂av| 国产三级亚洲三级在线理论| 亚洲欧美另类重口国产| 亚洲国产日韩精品久久| 亚洲国产精品成人女人| 欧美成人精品在线观看| 日本91一区二区不卡| 亚洲国产高清国产拍精品| 国产精品欧美日韩中文| 一区二区欧美日韩91| 男女视频一区二区三区在线观看| 亚洲一区二区日韩在线| 欧美激情性国产精品潮| 欧美日韩精品视频网站| 欧美精品成人在线一区| 亚洲人成免费观看网站| 国产精品久久久久久久亚洲| av一区二区三区高潮| 成年人免费在线观看国产| 午夜福利片在线观看视频| 日韩av一区二区久久久| 国产精品第一区第二区| 中文字幕日韩精品在线看| 免费高清日本一区二区三区视频| 日本人妻系列中文字幕| 亚洲国产高清国产拍精品| 91色九色吧在线观看| 天天免费日日夜夜夜夜| 中文字幕在线看二区不卡| 成人黄色免费在线网站| 日韩欧美麻豆不卡一区二区| 人妻中字幕出轨中文字幕| 日韩欧美短视频在线观看| 精品欧美一区二区三久久| 日韩不卡的一区免费视频|