【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;}});}
}
运行效果如下:
三、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详解