1. 程式人生 > >Android webview載入頁面

Android webview載入頁面

    private WebView webView;


    public void init() {
        webView = (WebView) findViewById(R.id.webview);
       //支援js
        webView.getSettings().setJavaScriptEnabled(true);
        WebSettings webSettings= webView.getSettings();
       //快取模式
        webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
        //自適應頁面
        webView.getSettings().setUseWideViewPort(true);
        webView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
       // 縮放至螢幕的大小
       webView.getSettings().setLoadWithOverviewMode(true);
         //支援縮放
        webView.getSettings().setSupportZoom(true);
    
         //關閉縮放按鈕
        webView.getSettings().setBuiltInZoomControls(false);

        //隱藏原生的縮放控制元件 
        webView.getSettings().setDisplayZoomControls(false); 
        //啟用h5快取 (webview存在兩種快取:網頁資料快取(儲存開啟過的頁面及資源)、H5快取(即appcache))
        webSettings.setAppCacheEnabled(true)
        //h5快取大小
        webSettings.setAppCacheMaxSize(size);
        String appCachePath = getApplicationContext().getCacheDir().getAbsolutePath();
       //h5快取路徑
        webSettings.setAppCachePath(appCachePath);
       //​設定可以訪問檔案 
        webSettings.setAllowFileAccess(true);

       //設定開啟Dom Storage機制
        webSettings.setDomStorageEnabled(true);
       
        //WebView的渲染程度高 
        webSettings.setRenderPriority(WebSettings.RenderPriority.HIGH);
        webView=getIntent().getStringExtra("webView");
       //不阻塞網路圖片下載(圖片載入不出來的時候,設定有效)
        webSettings.setBlockNetworkImage(false);;

        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP ) {
          //系統預設禁止了mixed content和第三方cookie(當圖片不顯示的時候,開啟MixedContentMode)
            webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
        }
       //不跳轉系統自帶的瀏覽器
        webView.setWebViewClient(new LoadWebView());
        webView.loadUrl(weburl);



    }
//自適應
WebSettings.LayoutAlgorithm.NARROW_COLUMNS :適應內容大小
WebSettings.LayoutAlgorithm.NARROW_COLUMNS :適應螢幕,內容將自動縮放

//快取模式
1,LOAD_CACHE_ONLY: 不使用網路,只讀取本地快取資料 
2,LOAD_DEFAULT: 根據cache-control決定是否從網路上取資料。
3,LOAD_CACHE_NORMAL: API level 17中已經廢棄, 從API level 11開始作用同LOAD_DEFAULT模式 
4,LOAD_NO_CACHE: 不使用快取,只從網路獲取資料.
5,LOAD_CACHE_ELSE_NETWORK,只要本地有,無論是否過期,或者no-cache,都使用快取中的資料。 

//常用縮放meta
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
1、width : 控制viewport的大小)
2、height :指定高度 
3、initial-scale : 初始縮放比例,頁面第一次載入時的縮放比例 
4、maximum-scale : 允許使用者縮放到的最大比例
5、minimum-scale : 允許使用者縮放到的最小比例
6、user-scalable : 使用者是否可以手動縮放

//Dom Storage機制
dom Storage機制與cookie類似,但是有更大的儲存空間 DOM Storage 分為 sessionStorage和 localStorage。localStorage 物件和 sessionStorage 物件使用方法基本相同,它們的區別在於作用的範圍不sessionStorage 用來儲存與頁面相關的資料,它在頁面關閉後無法使用。而 localStorage 則持久存在,在頁面關閉後也可以使用。

    class LoadWebView extends WebViewClient {
        //載入完畢時
       @Override
        public void onPageFinished(WebView view, String url) {
     
        }
      //在webview載入URL的時候可以截獲這個動作
       @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
                webView.loadUrl(weburl);
            return true;
        }
         //載入開始時
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {

            super.onPageStarted(view, url, favicon);
       
        }
       @Override  
        public void onReceivedSslError(WebView view,
                                       SslErrorHandler handler, SslError error) {
            //   handler.proceed();// 接受所有網站的證書
            //  webView.loadUrl(weburl);
        }
    }


}