Android webview載入網頁
阿新 • • 發佈:2019-02-02
webview嘗試(一)線上載入網頁(例百度)
webview佈局很簡單xml如下
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white" android:orientation="vertical" > <WebView android:id="@+id/webView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layerType="software" /> </RelativeLayout>
對應的activity的Webview_try邏輯程式碼如下
import android.content.Intent; import android.net.Uri; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.KeyEvent; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; public class Webview_try extends AppCompatActivity { private WebView mWebView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_webview_try); ActionBar actionBar = getSupportActionBar(); if(actionBar != null) { actionBar.hide(); } mWebView = (WebView) findViewById(R.id.webView1); // 設定WebView的客戶端 mWebView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return false;// 返回false } }); //baiduboxapp: //webView載入網頁後出現ERR_UNKNOWN_URL_SCHEME /*mWebView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { try{ if(url.startsWith("baiduboxapp://")){ Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(intent); return true; } }catch (Exception e){ return false; } mWebView.loadUrl(url); return true; } });*/ WebSettings webSettings = mWebView.getSettings(); // 讓WebView能夠執行javaScript webSettings.setJavaScriptEnabled(true); // 讓JavaScript可以自動開啟windows webSettings.setJavaScriptCanOpenWindowsAutomatically(true); // 設定快取 webSettings.setAppCacheEnabled(true); // 設定快取模式,一共有四種模式 webSettings.setCacheMode(webSettings.LOAD_CACHE_ELSE_NETWORK); // 設定快取路徑 // webSettings.setAppCachePath(""); // 支援縮放(適配到當前螢幕) webSettings.setSupportZoom(true); // 將圖片調整到合適的大小 webSettings.setUseWideViewPort(true); // 支援內容重新佈局,一共有四種方式 // 預設的是NARROW_COLUMNS webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); // 設定可以被顯示的螢幕控制 webSettings.setDisplayZoomControls(true); // 設定預設字型大小 webSettings.setDefaultFontSize(12); // 設定WebView屬性,能夠執行Javascript指令碼 // mWebView.getSettings().setJavaScriptEnabled(true); //3、 載入需要顯示的網頁 mWebView.loadUrl("http://www.baidu.com/"); ///4、設定響應超連結,在安卓5.0系統,不使用下面語句超連結也是正常的,但在MIUI中安卓4.4.4中需要使用下面這條語句,才能響應超連結 // mWebView.setWebViewClient(new HelloWebViewClient()); } // 設定回退監聽 // 5、覆蓋Activity類的onKeyDown(int keyCoder,KeyEvent event)方法 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) ) { if (mWebView.canGoBack()) { mWebView.goBack(); //goBack()表示返回WebView的上一頁面 return true; }else { finish(); return true; } } return false; } }
出現和需要注意的點有
①設定退回監聽,沒有監聽的控制的話點選返回會直接退出
②網頁加載出來之後,點選網頁中的一些連線會出現ERR_UNKNOWN_URL_SCHEME此類錯誤,此時可以通過mWebView.setWebViewClient(new WebViewClient()來進行簡單的操作,讓非http的網頁連結出來
③適當配置顯示,這樣針對不同網頁不同手機顯示才能相對正常美觀本人蔘考了https://www.2cto.com/kf/201609/548747.html