转载请注明转自:noyet12的博客
博客原址:http://blog.csdn.net/u012975705/article/details/49814587
简单介绍
WebView是Android中能加载显示网页的控件,可以将其视为一个浏览器。在使用WebView之前必须在AndroidManifest.xml文件中添加权限:
<uses-permission android:name="android.permission.INTERNET" />
否则会出现Web page not available错误。
WebView的实现方式
在Android中WebView有两种实现方式:一是在要Activity中实例化WebView组件
WebView webView = new WebView(this);
二是在布局文件中声明WebView,然后在Activity中实例化WebView
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"/>
webview = (WebView) findViewById(R.id.webview);
WebView基本设置的方法
/** 支持javascript */
webview.getSettings().setJavaScriptEnabled(true);
/** 设置可以支持缩放 */
webview.getSettings().setSupportZoom(true);
/** 设置出现缩放工具 */
webview.getSettings().setBuiltInZoomControls(true);
/** 扩大比例的缩放 */
webview.getSettings().setUseWideViewPort(true);
/** 清除浏览器缓存 */
webview.clearCache(true);
/** 自适应屏幕 */
webview.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
/** 优先使用缓存 *、
webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
/** 不使用缓存: */
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
WebView数据加载方法详解
(1)loadUrl()
直接加载网页。
使用方式:
//WebView加载web资源
webView.loadUrl("http://baidu.com");
//覆盖WebView默认使用第三方或系统默认浏览器打开网页的行为,使网页用WebView打开
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
/** 返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器 */
view.loadUrl(url);
return true;
}
});
/** 判断页面加载过程 */
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
if (newProgress == 100) {
/** 网页加载完成 */
} else {
/** 加载中 */
}
}
});
(2)loadData
用来装载URI格式的数据,但不能加载网络内容。
使用方式:
webview.loadData(content, "text/html", "utf-8")
在使用loadData方法加载数据的时候,有可能会出现乱码,这时候可以使用loadDataWithBaseURL方法来加载数据,能过避免中文乱码
loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl)
在使用loadDataWithBaseURL时,需要注意的就是 baseUr:虽然API上写的是要传一个Url,但我在用时,发现传一个Url并不可以,我发现这个就是一个标志位,用来标志当前页面的Key值的,而historyUrl就是一个value值,在加载时,它会把baseUrl和historyUrl传到List列表中,当作历史记录来使用,当前进和后退时,它会通过baseUrl来寻找historyUrl的路径来加载historyUrl路径来加载历史界面,需要注意的就是history所指向的必须是一个页面,并且页面存在于SD卡中或程序中(assets),loadDataWithBaseURL,它本身并不会向历史记录中存储数据,要想实现历史记录,需要我们自己来实现。
一般使用方式:
webview.loadDataWithBaseURL(null, content, "text/html", "utf-8", null);
版权声明:本文为博主原创文章,转载请注明出处。博客首页:http://blog.csdn.net/u012975705。订阅:http://blog.csdn.net/rss.html?type=column&column=noyet12