Android关于webview的开发心得(笔记(一)简单使用webview)

81 阅读2分钟

Android关于webview的开发心得(笔记(一)简单使用webview

关于

  写这篇文章的时候我内心想得很多东西,全都是这几个月来项目中碰到的问题形成的完整解决方法,包括使用腾讯X5内核、webview网页加载进度、webview的h5支持、多窗口重定向问题、webview中h5页面的文件操作拦截、以及今晚遇到的证书问题、头部样式重复去除问题。
准备借此写一个小系列文章,由浅入深介绍webview的使用,本篇是一个简单的加载网页的webview的基本使用。

效果图

在这里插入图片描述

第一步,使用webview控件(原生)

  我是新建了一个项目,然后修改的activity_main.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

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

</androidx.constraintlayout.widget.ConstraintLayout>

第二步,修改MainActivity.java

  这里我用到了第三方简易加载框,可以参考如下《我的第一个开源库-DialogLoading弹出加载框》,或者自己考量。

public class MainActivity extends AppCompatActivity {

    private WebView webView;

    Dialog mDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        webView = (WebView) findViewById(R.id.webView);
        //这里用的是第三方加载框,页面加载的时候加载框给用户体验感
        mDialog = DialogUtil.createLoadingDialog(this,"加载中...");
        WebSettings settings = webView.getSettings();
        //自适应屏幕
        //  webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
        settings.setJavaScriptEnabled(true);   //调用JS方法.安卓版本大于17,加上注解 @JavascriptInterface
        settings.setSupportZoom(true); //支持缩放,默认为true。是下面那个的前提。
        settings.setBuiltInZoomControls(true); //设置内置的缩放控件。若为false,则该WebView不可缩放
        settings.setJavaScriptCanOpenWindowsAutomatically(true); //允许使用js打开窗口
        settings.setUseWideViewPort(true);
        settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
        settings.setLoadWithOverviewMode(true);
        webView.setWebViewClient(new WebViewClient(){
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);

            }

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                //页面加载结束停止加载框
                DialogUtil.closeDialog(mDialog);
            }
        });

        webView.loadUrl("https://blog.csdn.net/tobey_r1");

    }
}

  当然了,写完这一步,别忘记在AndroidManifest.xml配置文件中添加网络权限申请:

 <uses-permission android:name="android.permission.INTERNET"/>

当然啦,我的开源库webloading已经解决了绝大部分的webview使用问题,详情见WebLoading开源库,支持https访问