Android webview載入頁面
阿新 • • 發佈:2018-12-11
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); } } }