作者:猥琐叔装嫩小孩 | 来源:互联网 | 2023-09-13 10:36
文章预览前言1.什么是WebView?2.相关方法一、WebView简单使用1.1、环境准备1.2、MyWebChromClient.java1.3、MyWebVie
文章预览
- 前言
- 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&#61;"android.permission.INTERNET"/>
创建一个assets
文件夹用来放html
网页或者一些不用编译的文件
放入一个html文件&#xff0c;如图所示
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 &#61; mActivity;}&#64;Overridepublic void onProgressChanged(WebView view, int newProgress) {super.onProgressChanged(view, newProgress);}&#64;Overridepublic void onReceivedTitle(WebView view, String title) {super.onReceivedTitle(view, title);
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 &#61; mwebView;}&#64;Overridepublic boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {view.loadUrl(request.getUrl().toString());return true;}&#64;Overridepublic void onPageStarted(WebView view, String url, Bitmap favicon) {super.onPageStarted(view, url, favicon);Log.d("webView","onPageStarted...");}&#64;Overridepublic void onPageFinished(WebView view, String url) {super.onPageFinished(view, url);Log.d("webView","onPageFinished...");
mwebView.evaluateJavascript("Javascript:alert(&#39;韭菜盖饭!&#39;)",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;&#64;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mwebView &#61; findViewById(R.id.wv);mwebView.loadUrl("file:///android_asset/test.html");mwebView.getSettings().setJavascriptEnabled(true);mwebView.setWebViewClient(new MyWebViewClient(mwebView));mwebView.setWebChromeClient(new MyWebChromClient(this));
mwebView.loadUrl("https://m.baidu.com/"); }&#64;Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if(keyCode &#61;&#61; KeyEvent.KEYCODE_BACK && mwebView.canGoBack()){mwebView.goBack();return true;}return super.onKeyDown(keyCode, event);}
}
1.5、activity_main.xml
布局文件就包含了一个WebView
组件
<LinearLayout xmlns:android&#61;"http://schemas.android.com/apk/res/android"xmlns:app&#61;"http://schemas.android.com/apk/res-auto"xmlns:tools&#61;"http://schemas.android.com/tools"android:layout_width&#61;"match_parent"android:layout_height&#61;"match_parent"tools:context&#61;".MainActivity"><WebViewandroid:id&#61;"&#64;&#43;id/wv"android:layout_width&#61;"match_parent"android:layout_height&#61;"match_parent"/>LinearLayout>
二、效果预览