Android WebView製做簡易瀏覽器

最終效果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();
                }
            }
        });
相關文章
相關標籤/搜索