WebView 显示数据
WebView
1, 包含了浏览网页的功能的控件
2, WebViewClient 网页加载的处理器
webView 只有设置了WebViewClient , 才能在当前的应用程序中, 显示网页
3, WebChromeClient webView处理界面功能的, ---进度条
4, WebSettings: webView 设置的
常用的方法:
webView.canGoBack() 用于检测网页是否可以后退
webView.goBack() WebView后退
webView.canGoForward() 用于检测网页是否可以前进
webView.goForward() WebView前进
webView.stopLoading() 停止网页的加载
webView.reload() 刷新网页
webView.loadUrl(String url) 加载网页
加载本地的页面
1, src/main 文件夹中创建一个assets 的目录
2, 创建一个html 的页面
3, 在Activity 中加载数据时,
mWebView.loadUrl("file:///android_asset/js.html");
实现效果: 实例图
实例代码:
package bw.com.bw_day16; import android.graphics.Bitmap; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.webkit.WebChromeClient; import android.webkit.WebResourceRequest; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.ProgressBar; public class MainActivity extends AppCompatActivity { //WebView 继承 AbsoluteLayout ---》 ViewGroup --- 》 View --- 》Object private WebView mWebView; private ProgressBar mPb; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mWebView = (WebView) findViewById(R.id.web_view_id); mPb = (ProgressBar) findViewById(R.id.progress_bar_id); //1, 设置加载的页面 //mWebView.loadUrl("http://baidu.com"); //mWebView.loadUrl("http://mail.163.com"); mWebView.loadUrl("file:///android_asset/hello.html"); //2, webView 中必须要设置WebViewClient , 才能在当前App中显示网页 mWebView.setWebViewClient(new WebViewClient(){ //重写加载Url地址的方法 @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { return super.shouldOverrideUrlLoading(view, request); } //网页开始加载时, 调用的方法 --- 每次有新的网页加载时,都会调用该方法 @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); //显示进度条 mPb.setVisibility(View.VISIBLE); } //网页结束加载时, 调用的方法 @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); //隐藏进度条 mPb.setVisibility(View.GONE); } }); //3, 设置接收页面中的相关信息 WebChromeClient mWebView.setWebChromeClient(new WebChromeClient(){ //当加载页面的进度发生变化时, 会自动调用 @Override public void onProgressChanged(WebView view, int newProgress) { super.onProgressChanged(view, newProgress); mPb.setProgress(newProgress); } }); //4, 设置WebSettings 参数信息 WebSettings webSettings = mWebView.getSettings(); //设置WebSettings 的配置后, 才会更新WebView中的设置 webSettings.setJavaScriptEnabled(true);//设置WebView 支持js } //按钮点击事件监听器 //后退 public void back(View view) { //判断是否可以后退, 之后再进行后退的操作 if(mWebView.canGoBack()) { mWebView.goBack(); } } //前进 public void forward(View view) { //判断是否可以前进, 之后再进行前进的操作 if(mWebView.canGoForward()) { mWebView.goForward(); } } //停止 public void stop(View view) { mWebView.stopLoading();//停止加载 } //刷新 public void refresh(View view) { mWebView.reload();//重新加载 } }
页面
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="bw.com.bw_day16.MainActivity"> <ProgressBar android:layout_width="match_parent" android:layout_height="5dp" android:id="@+id/progress_bar_id" style="?android:attr/progressBarStyleHorizontal" /> <WebView android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:id="@+id/web_view_id"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:text="后退" android:onClick="back" /> <Button android:layout_width="0dp" android:layout_height="wrap_content" android:text="前进" android:layout_weight="1" android:onClick="forward"/> <Button android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:text="停止" android:onClick="stop" /> <Button android:layout_width="0dp" android:layout_height="wrap_content" android:text="刷新" android:layout_weight="1" android:onClick="refresh"/> </LinearLayout> </LinearLayout>