欧美vvv,亚洲第一成人在线,亚洲成人欧美日韩在线观看,日本猛少妇猛色XXXXX猛叫

新聞資訊

    為什么要學(xué)習(xí)與H5互調(diào)?

    微信,QQ空間等大量軟件都內(nèi)嵌了H5,不得不說是一種趨勢。與H5互調(diào)可以讓我們的實現(xiàn)混合開發(fā),至于混合開發(fā)就是在一個App中內(nèi)嵌一個輕量級的瀏覽器,一部分原生的功能改為Html 5來開發(fā)。

    優(yōu)勢:使用H5實現(xiàn)的功能能夠在不升級App的情況下動態(tài)更新,而且可以在或iOS的App上同時運行,節(jié)約了成本,提高了開發(fā)效率。

    原理:其實就是Java代碼和之間的調(diào)用。

    開局插入一張文章的目錄結(jié)構(gòu):

    簡介

    要實現(xiàn)與H5互調(diào),是一個很重要的控件,可以很好地幫助我們展示html頁面,所以有必要先了解一下。

    一丶常用方法

    //加載assets目錄下的test.html文件
    webView.loadUrl("file:///android_asset/test.html");
    //加載網(wǎng)絡(luò)資源(注意要加上網(wǎng)絡(luò)權(quán)限)
    webView.loadUrl("http://blog.csdn.net");
    

    實現(xiàn)對網(wǎng)頁中超鏈接的攔截(比如如果是極客導(dǎo)航的主頁,則直接攔截轉(zhuǎn)到百度主頁): 當點擊頁面中的鏈接后,會在加載URL前回調(diào)ding( view, url)方法,一般點擊一個鏈接此方法調(diào)用一次。

     webView.setWebViewClient(new WebViewClient(){
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
     if("http://www.jikedaohang.com/".equals(url)) {
     view.loadUrl("https://www.baidu.com/");
     }
     
     return true;
     }
     });
    

    關(guān)于ding返回值的誤區(qū):網(wǎng)上很多解釋是 true代表在本中打開鏈接, false代表調(diào)用系統(tǒng)瀏覽器打開鏈接。其實只要設(shè)置了,則就不會調(diào)用系統(tǒng)瀏覽器。 那么ding的返回值到底代表什么呢? true,則在打開新的url時就不會再加載這個url了,所有處理都需要在中操作,包含加載; false,則系統(tǒng)就認為上層沒有做處理,接下來還是會繼續(xù)加載這個url的;默認 false。具體的區(qū)別展示如下: 加載百度主頁,設(shè)置后,重寫ding( view, url)方法,第一張是返回false的截圖(點擊后正常跳轉(zhuǎn)),第二章是返回true的截圖(點擊無反應(yīng),如果希望能夠跳轉(zhuǎn),則需要我們自己進行處理):

    還有一點需要注意的是,如果我們攔截了某個url,那么 false 和 true區(qū)別不大,所以一般建議 false。加載網(wǎng)頁時替換某個資源(比如在加載一個網(wǎng)頁時,需要加載一個logo圖片,而我們想要替換這個logo圖片,用我們目錄下的一張圖片替代) 我們知道我們在加載一個網(wǎng)頁的同時也會加載js,css,圖片等資源,所以會多次調(diào)用st方法,我們可以在st中進行圖片替換。 注意:st有兩個重載: ① st ( view, url) 【已過時】 ② st ( view, ) 這兩種方法主要是第二個參數(shù)的不同, 將能夠獲取更多的信息,提供了(),,等方法。這里主要是為了展示效果,使用了第一種回調(diào)方法。實現(xiàn)方法如下:

    mWebView.setWebViewClient(new WebViewClient(){
     @Override
     public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
     WebResourceResponse response = null;
     if (url.contains("logo")) {
     try {
     InputStream logo = getAssets().open("logo.png");
     response = new WebResourceResponse("image/png", "UTF-8", logo);
     } catch (IOException e) {
     e.printStackTrace();
     }
     }
     return response;
     }
     });
    

    設(shè)置開始加載網(wǎng)頁、加載完成、加載錯誤時處理

    webView.setWebViewClient(new WebViewClient() { 
     
     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     super.onPageStarted(view, url, favicon); 
     // 開始加載網(wǎng)頁時處理 如:顯示"加載提示" 的加載對話框 
     ...
     } 
     
     @Override 
     public void onPageFinished(WebView view, String url) { 
     super.onPageFinished(view, url); 
     // 網(wǎng)頁加載完成時處理 如:讓 加載對話框 消失 
     ...
     } 
     
     @Override 
     public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
     super.onReceivedError(view, errorCode, description, failingUrl); 
     // 加載網(wǎng)頁失敗時處理 如:提示失敗,或顯示新的界面
     ...
     } 
    }); 
    

    處理https請求,為處理ssl證書設(shè)置默認是不處理https請求的access數(shù)據(jù)庫參數(shù)查詢,需要在子類中重寫父類的函數(shù)

    webView.setWebViewClient(new WebViewClient() { 
     
     @Override 
     public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { 
     handler.proceed(); // 接受信任所有網(wǎng)站的證書 
     // handler.cancel(); // 默認操作 不處理 
     // handler.handleMessage(null); // 可做其他處理 
     } 
    }); 
    

    顯示頁面加載進度在子類中重寫父類的函數(shù),表示當前頁面加載的進度,為1至100的整數(shù)

    webView.setWebChromeClient(new WebChromeClient() { 
     
     public void onProgressChanged(WebView view, int progress) { 
     setTitle("頁面加載中,請稍候..." + progress + "%"); 
     setProgress(progress * 100); 
     
     if (progress == 100) { 
     //... 
     } 
     } 
    }); 
    

    加快HTML網(wǎng)頁加載完成速度(默認情況html代碼下載到后,開始解析網(wǎng)頁各個節(jié)點,發(fā)現(xiàn)有外部樣式文件或者外部腳本文件時,會異步發(fā)起網(wǎng)絡(luò)請求下載文件,但如果在這之前也有解析到image節(jié)點,那勢必也會發(fā)起網(wǎng)絡(luò)請求下載相應(yīng)的圖片。在網(wǎng)絡(luò)情況較差的情況下access數(shù)據(jù)庫參數(shù)查詢,過多的網(wǎng)絡(luò)請求就會造成帶寬緊張,影響到css或js文件加載完成的時間,造成頁面空白過久。解決的方法就是告訴先不要自動加載圖片,等頁面后再發(fā)起圖片加載。)

    //1.首先在WebView初始化時添加如下代碼
    if(Build.VERSION.SDK_INT >= 19) { 
    /*對系統(tǒng)API在19以上的版本作了兼容。因為4.4以上系統(tǒng)在onPageFinished時再恢復(fù)圖片加載時,如果存在多張圖片引用的是相同的src時,會只有一個image標簽得到加載,因而對于這樣的系統(tǒng)我們就先直接加載。*/ webView.getSettings().setLoadsImagesAutomatically(true); 
     } else { 
     webView.getSettings().setLoadsImagesAutomatically(false); 
     } 
     
    //2.在WebView的WebViewClient子類中重寫onPageFinished()方法添加如下代碼: 
     @Override 
    public void onPageFinished(WebView view, String url) { 
     if(!webView.getSettings().getLoadsImagesAutomatically()) { 
     webView.getSettings().setLoadsImagesAutomatically(true); 
     } 
    } 
    

    創(chuàng)建

    class MyDownloadListenter implements DownloadListener{
     @Override
     public void onDownloadStart(String url, String userAgent,String contentDisposition, String mimetype, long contentLength) {
     //下載任務(wù)...,主要有兩種方式
     //(1)自定義下載任務(wù)
     //(2)調(diào)用系統(tǒng)的download的模塊
     Uri uri = Uri.parse(url);
     Intent intent = new Intent(Intent.ACTION_VIEW, uri);
     startActivity(intent);
     }
    }
    

    給加入監(jiān)聽

    webview.setDownloadListener(new MyDownloadListenter());
    

    public boolean onKeyDown(int keyCode, KeyEvent event) { 
    //其中webView.canGoBack()在webView含有一個可后退的瀏覽記錄時返回true
     
     if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) { 
     webView.goBack(); 
     return true; 
     } 
     return super.onKeyDown(keyCode, event); 
     }
    }
    

    二丶配置

    獲取對象

    = .();

    常用設(shè)置方法(1)支持js

    .(true);

    (2)設(shè)置緩存方式,主要有以下幾種: : 不使用網(wǎng)絡(luò),只讀取本地緩存數(shù)據(jù)。 : 根據(jù)cache-決定是否從網(wǎng)絡(luò)上取數(shù)據(jù)。 : API level 17中已經(jīng)廢棄, 從API level 11開始作用同模式。 : 不使用緩存,只從網(wǎng)絡(luò)獲取數(shù)據(jù)。 ORK:只要本地有,無論是否過期,或者no-cache,都使用緩存中的數(shù)據(jù)。

    .(.);

    (3)開啟DOM API功能(HTML5 提供的一種標準的接口,主要將鍵值對存儲在本地,在頁面加載完畢后可以通過 來操作這些數(shù)據(jù)。)

    .(true);

    (4)設(shè)置數(shù)據(jù)庫緩存路徑

    .();

    (5)設(shè)置 緩存目錄

    .();

    (6)設(shè)置默認編碼

    .(“utf-8”);

    (7)將圖片調(diào)整到適合的大小

    .(false);

    (8)支持縮放

    .(true);

    (9)支持內(nèi)容重新布局

    .(..);

    (10)多窗口

    .ws();

    (11)設(shè)置可以訪問文件

    .(true);

    (12)當調(diào)用時為設(shè)置節(jié)點

    .(true);

    (13)設(shè)置支持縮放

    .ls(true);

    (14)支持通過JS打開新窗口

    .(true);

    (15)縮放至屏幕的大小

    .ode(true);

    (16)支持自動加載圖片

    .(true);

    三丶 的回調(diào)方法列表

    主要用來輔助處理各種通知、請求等事件,通過方法設(shè)置。

    (1)更新歷史記錄

    ry( view, url, )

    (2)應(yīng)用程序重新請求網(wǎng)頁數(shù)據(jù)

    ( view, , )

    (3)在加載頁面資源時會調(diào)用,每一個資源(比如圖片)的加載都會調(diào)用一次。

    ( view, url)

    (4)開始載入頁面調(diào)用,通常我們可以在這設(shè)定一個的頁面,告訴用戶程序在等待網(wǎng)絡(luò)響應(yīng)。

    ( view, url, )

    (5)在頁面加載結(jié)束時調(diào)用。同樣道理,我們知道一個頁面載入完成,于是我們可以關(guān)閉 條,切換程序動作。

    ( view, url)

    (6)報告錯誤信息

    ( view, int , , )

    (7)獲取返回信息授權(quán)請求

網(wǎng)站首頁   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權(quán)所有