最终效果

Android WebView制作简易浏览器Android WebView制作简易浏览器

先创建一个WebView控件,其他的就是通过线性布局在上方加入网址输入框和两个按钮

<WebView
            android:id="@+id/act_webview_wv"
            android:layout_width="match_parent"
            android:layout_height="match_parent"

            >

初始化控件,然后自定义几个网址,做演示

  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());

设置适配器

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);
                    }
                });
            }
        });

点击前往按钮,打开编辑框内对应的网址

 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();
                }
            }
        });

 

Android WebView制作简易浏览器

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-26
  • 2022-12-23
  • 2021-06-18
  • 2021-08-22
  • 2022-12-23
猜你喜欢
  • 2021-11-30
  • 2021-06-16
  • 2022-12-23
  • 2022-12-23
  • 2021-11-23
  • 2022-12-23
相关资源
相似解决方案