> 文章列表 > 【Android】之【WebView】

【Android】之【WebView】

【Android】之【WebView】

一、简介

WebView是一种控件,它基于webkit引擎,因此具备渲染Web页面的功能。  
基于Webview的混合开发,就是在 Android os(安卓)/I os(苹果)原生APP里,通过WebView控件嵌入Web页面。

你手机里有淘宝软件吧?
就是外边是个原生APP的壳,内容是H5页面(基于html+css+js的Web页面)。现在的移动端混合开发软件,如果对于交互渲染要求不是特别高的项目,基本都是这么玩的。

二、示例

WebView的最简单的使用方式即是直接显示网页内容,有以下步骤:

1、AndroidManifest.xml 添加访问网络权限

<uses-permission android:name="android.permission.INTERNET"/>

2、在布局文件中添加WebView控件

<WebViewandroid:id="@+id/wv_webview"android:layout_width="match_parent"android:layout_height="match_parent" />

3、在代码中让WebView控件加载显示网页

public class WebViewActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_web_view);//获得控件WebView webView = (WebView) findViewById(R.id.wv_webview);//访问网页webView.loadUrl("http://www.baidu.com");//系统默认会通过手机浏览器打开网页,为了能够直接通过WebView显示网页,则必须设置webView.setWebViewClient(new WebViewClient(){@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {//使用WebView加载显示urlview.loadUrl(url);//返回truereturn true;}});}
}

运行效果如下:

【Android】之【WebView】

三、API

1、加载URL

//方式1. 加载一个网页: 
webView.loadUrl(“百度一下,你就知道“);//方式2:加载apk包中的html页面 
webView.loadUrl(“file:///android_asset/test.html”);//方式3:加载手机本地的html页面 
webView.loadUrl(“content://com.android.htmlfileprovider/sdcard/test.html”);// 方式4: 加载 HTML 页面的一小段内容 
WebView.loadData(String data, String mimeType, String encoding) 
// 参数说明: 
// 参数1:需要截取展示的内容 
// 内容里不能出现 ’#’, ‘%’, ‘\\’ , ‘?’ 这四个字符,若出现了需用 %23, %25, %27, %3f 对应来替代,否则会出现异常 
// 参数2:展示内容的类型 
// 参数3:字节码

2、WebView的状态

//激活WebView为活跃状态,能正常执行网页的响应
webView.onResume();//当页面被失去焦点被切换到后台不可见状态,需要执行onPause()
//通过onPause()动作通知内核暂停所有的动作,比如DOM的解析、JavaScript执行等
webView.onPause();//当应用程序(存在webview)被切换到后台时,这个方法不仅仅针对当前的webview而是全局的全应用程序的webview
//它会暂停所有webview的布局显示、解析、延时,从而降低CPU功耗
webView.pauseTimers()//恢复pauseTimers状态
webView.resumeTimers();//销毁Webview //在关闭了Activity时,如果Webview的音乐或视频,还在播放,就必须销毁Webview。
//但是注意:webview调用destory时,webview仍绑定在Activity上
//这是由于自定义webview构建时传入了该Activity的context对象
//因此需要先从父容器中移除webview,然后再销毁webview
rootLayout.removeView(webView);
webView.destroy();

3、前进、后退网页


//是否可以后退
Webview.canGoBack()//后退网页
Webview.goBack()//是否可以前进
Webview.canGoForward()//前进网页
Webview.goForward()//以当前的index为起始点前进或者后退到历史记录中指定的steps
//如果steps为负数则为后退,正数则为前进
Webview.goBackOrForward(intsteps)

常见用法:Back键控制网页后退

public boolean onKeyDown(int keyCode, KeyEvent event) {if ((keyCode == KEYCODE_BACK) && mWebView.canGoBack()) {mWebView.goBack();return true;}return super.onKeyDown(keyCode, event);
}

四、参考

  • Carson带你学Android:最全面的Webview使用详解
  • Android WebView 的使用(超详细用法)
  • 图解WebView – (1) WebView概述
  • 图解WebView – (2) WebView 常用API详解