文章目录
1、WebView是什么?
WebView是android中一个很是重要的控件,它的做用是用来展现一个web页面。javascript
2、WebView的做用
(1)显示和渲染网页;
(2)可与页面JavaScript交互,实现混合开发。
html
3、使用步骤
1.使用WebView以前,需在AndroidManifest.xml文件中声明访问网络权限
<uses-permission android:name="android.permission.INTERNET" />
2.加载页面的方式
加载页面通常有如下两种形式:java
//方式一:加载一个网页 webView.loadUrl("http://www.baidu.com"); //方式二:加载应用资源文件内的网页 webView.loadUrl("file:///android_asset/test.html");
4、示范程序
(1)使用WebView加载本地文件
A:新建一个本地test.html文件android
建立步骤:web
a:建立assets文件夹
b:在生成的assets文件夹下建立test.xml文件
浏览器
<html> <title>本地HTML</title> <script> function changetxt(val){ document.getElementById("txt").innerHTML=val; } </script> <body>Hello World</body><p id="txt"></p> </html>
B:在项目的布局文件中填入WebView网络
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="15dp"> <WebView android:id="@+id/wb" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>
效果图:
C:在Java代码中填写
app
package com.example.upclass; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.webkit.WebView; public class MainActivity_10_19 extends AppCompatActivity { private WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_10_19); webView = findViewById(R.id.wb); //要支持JS,不然一些网页不能正常加载 webView.getSettings().setJavaScriptEnabled(true); //加载本地HTML 文件路径是固定的 webView.loadUrl("file:///android_asset/test.html"); } }
运行效果图:
ide
(2)使用WebView加载网页文件
A:将加载本地文件的语句改成如下便可布局
webView.loadUrl("http://www.baidu.com");
注意:
若是直接用上面的语句来加载网页,颇有可能会弹出系统浏览器进行网页访问,这样使用体验就会不好!解决办法是在loadUrl()以前加上这样一句代码:
//这样写就继续在WebView中继续打开连接 webView.setWebViewClient(new WebViewClient());
完整代码:
public class MainActivity_10_19 extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_10_19); WebView webView = (WebView)findViewById(R.id.wb); webView.getSettings().setJavaScriptEnabled(true); webView.setWebViewClient(new WebViewClient()); webView.loadUrl("http://www.baidu.com"); } }
(3)WebView的两个经常使用方法
webView.setWebViewClient(new WebViewClient());
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClient());
做用:是当从一个网页跳转到另一个网页时,咱们但愿目标网页仍然在当前的webview中显示,而不是在浏览器中打开 //若是没有webView.setWebViewClient(new WebViewClient());这句,该网页会在手机自带的浏览器中打开。
webView.setWebChromeClient(new WebChromeClient());
做用:用来设置更加丰富的处理效果,好比JS、进度条等
实例:
webView.setWebViewClient(new WebViewClient() { //当页面开始加载 @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); Log.d("WebView", "onPageStarted..."); } //当页面完成加载 @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); Log.d("WebView", "onPageFinished..."); /* 这两条语句能够设置一个当页面加载完成时,弹出一个框 小广告就是这样来的 webView.loadUrl("javascript:alert('hello')"); webView.evaluateJavascript("javascript:alert('hello')", null); */ } });
小广告图示:
webView.setWebChromeClient(new WebChromeClient() { //监听到进度 能够用于设置一个进度条 @Override public void onProgressChanged(WebView view, int newProgress) { super.onProgressChanged(view, newProgress); Log.d("MainActivity", String.valueOf(newProgress)); } //能够获取网页的标题 @Override public void onReceivedTitle(WebView view, String title) { super.onReceivedTitle(view, title); setTitle(title); } });
5、总结
码农不易,看完啦,点个赞再走吧!