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访问