最終效果java
先建立一個WebView控件,其餘的就是經過線性佈局在上方加入網址輸入框和兩個按鈕android
<WebView android:id="@+id/act_webview_wv" android:layout_width="match_parent" android:layout_height="match_parent" >
初始化控件,而後自定義幾個網址,作演示web
private WebView wv; private EditText webEt; private Button webBtn,gotoWebBtn; private String urlStr; private ListView urlLv; private ArrayAdapter<String> adapter; private String[] itemWeb = new String[]{"https://www.baidu.com" ,"https://www.google.com" ,"https://my.oschina.net/"}; wv = (WebView) findViewById(R.id.act_webview_wv); webEt = (EditText) findViewById(R.id.act_webview_input_et); webBtn = (Button) findViewById(R.id.act_webview_url_btn); gotoWebBtn = (Button) findViewById(R.id.act_webview_goto_btn); urlLv = (ListView) findViewById(R.id.act_webview_url_list_lv); webEt.setText(""); urlLv.setVisibility(View.INVISIBLE);
申請網絡權限瀏覽器
<uses-permission android:name="android.permission.INTERNET" />
設置在當前應用內打開網頁,若是不設置的話,會自動調用系統瀏覽器緩存
//設置在當前應用內瀏覽網頁 wv.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } });
設置瀏覽器的支持功能網絡
/* 設置支持Js,必須設置的,否則網頁基本上不能看 */ wv.getSettings().setJavaScriptEnabled(true); /* 設置緩存模式,我這裏使用的默認,不作多講解 */ wv.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); /* 設置爲true表示支持使用js打開新的窗口 */ wv.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); /* 大部分網頁須要本身保存一些數據,這個時候就的設置下面這個屬性 */ wv.getSettings().setDomStorageEnabled(true); /* 設置爲使用webview推薦的窗口 */ wv.getSettings().setUseWideViewPort(true); /* 設置網頁自適應屏幕大小 ---這個屬性應該是跟上面一個屬性一塊兒用 */ wv.getSettings().setLoadWithOverviewMode(true); /* HTML5的地理位置服務,設置爲true,啓用地理定位 */ wv.getSettings().setGeolocationEnabled(true); /* 設置是否容許webview使用縮放的功能,我這裏設爲false,不容許 */ wv.getSettings().setBuiltInZoomControls(false); /* 提升網頁渲染的優先級 */ wv.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH); /* 設置顯示水平滾動條,就是網頁右邊的滾動條.我這裏設置的不顯示 */ wv.setHorizontalScrollBarEnabled(false); /* 指定垂直滾動條是否有疊加樣式 */ wv.setVerticalScrollbarOverlay(true); /* 設置滾動條的樣式 */ wv.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); /* 這個不用說了,重寫WebChromeClient監聽網頁加載的進度,從而實現進度條 */ wv.setWebChromeClient(new WebChromeClient());
設置適配器ide
if (adapter == null) { adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, itemWeb); }else { adapter.notifyDataSetChanged(); } urlLv.setAdapter(adapter);
點擊網址按鈕顯示列表,當點擊列表中的網址後,自動將網址填入編輯框佈局
webBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { urlLv.setVisibility(View.VISIBLE); urlLv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { String urlText = itemWeb[position]; urlStr = urlText; urlLv.setVisibility(View.INVISIBLE); webEt.setText(urlText); } }); } });
點擊前往按鈕,打開編輯框內對應的網址ui
gotoWebBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String urlText = webEt.getText().toString().trim(); if (!TextUtils.isEmpty(urlText)) { urlStr = urlText; wv.loadUrl(urlStr); setBrowser(); }else { Toast.makeText(WebViewActivity.this, "請先輸入網址", Toast.LENGTH_SHORT).show(); } } });