文章预览
- 前言
- 1.什么是WebView?
- 2.相关方法
- 一、WebView简单使用
- 1.1、环境准备
- 1.2、MyWebChromClient.java
- 1.3、MyWebViewClient
- 1.4、MainActivity.java
- 1.5、activity_main.xml
- 二、效果预览
前言
1.什么是WebView?
Android内置webkit内核的高性能浏览器,而WebView则是在这个基础上进行封装后的一个 控件,WebView直译网页视图,我们可以简单的看作一个可以嵌套到界面上的一个浏览器控件!
2.相关方法
参考文章
https://www.runoob.com/w3cnote/android-tutorial-webview.html
一、WebView简单使用
1.1、环境准备
加入网络访问权限
<uses-permission android:name="android.permission.INTERNET"/>
创建一个assets
文件夹用来放html
网页或者一些不用编译的文件
放入一个html文件,如图所示
1.2、MyWebChromClient.java
继承WebChromeClient
package cn.zzuli.mywebview;import android.app.Activity;
import android.content.Context;
import android.webkit.WebChromeClient;
import android.webkit.WebView;public class MyWebChromClient extends WebChromeClient {private Activity mActivity;public MyWebChromClient(Activity mActivity) {this.mActivity = mActivity;}/*** 设置网页加载的进度条* @param view* @param newProgress*/@Overridepublic void onProgressChanged(WebView view, int newProgress) {super.onProgressChanged(view, newProgress);}/*** 设置网页标题* @param view* @param title*/@Overridepublic void onReceivedTitle(WebView view, String title) {super.onReceivedTitle(view, title);
// 必须在Activity的页面中设置mActivity.setTitle(title);}
}
1.3、MyWebViewClient
继承WebViewClient
package cn.zzuli.mywebview;import android.graphics.Bitmap;
import android.util.Log;
import android.webkit.WebResourceRequest;
import android.webkit.WebView;
import android.webkit.WebViewClient;public class MyWebViewClient extends WebViewClient {private WebView mwebView;public MyWebViewClient(WebView mwebView) {this.mwebView = mwebView;}/*** 设置不用本机的浏览器进行加载* @param view* @param request* @return*/@Overridepublic boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {view.loadUrl(request.getUrl().toString());return true;}/*** 点击的页面开始* @param view* @param url* @param favicon*/@Overridepublic void onPageStarted(WebView view, String url, Bitmap favicon) {super.onPageStarted(view, url, favicon);Log.d("webView","onPageStarted...");}/*** 点击的页面加载完成* @param view* @param url*/@Overridepublic void onPageFinished(WebView view, String url) {super.onPageFinished(view, url);Log.d("webView","onPageFinished...");//使用JS代码
// mwebView.loadUrl("javascript:alert('韭菜盖饭!')");mwebView.evaluateJavascript("javascript:alert('韭菜盖饭!')",null);}
}
1.4、MainActivity.java
package cn.zzuli.mywebview;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebView;public class MainActivity extends AppCompatActivity {private WebView mwebView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mwebView = findViewById(R.id.wv);//加载本地网页mwebView.loadUrl("file:///android_asset/test.html");//加载网络页面mwebView.getSettings().setJavaScriptEnabled(true);//设置自定义的MyWebViewClientmwebView.setWebViewClient(new MyWebViewClient(mwebView));//设置自定义的MyWebChromClientmwebView.setWebChromeClient(new MyWebChromClient(this));//本地写一些JS代码,网页端进行调用
// mwebView.addJavascriptInterface();mwebView.loadUrl("https://m.baidu.com/"); //地址为百度移动站点}/*** 解决退出网页却直接退出Activity的问题* @param keyCode* @param event* @return*/@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if(keyCode == KeyEvent.KEYCODE_BACK && mwebView.canGoBack()){mwebView.goBack();return true;}return super.onKeyDown(keyCode, event);}
}
1.5、activity_main.xml
布局文件就包含了一个WebView
组件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"><WebViewandroid:id="@+id/wv"android:layout_width="match_parent"android:layout_height="match_parent"/></LinearLayout>