在Android中,可以使用Webview控件来浏览网页。
下面我们就来介绍webView控件的使用方式:
---------------------------------------------
目录:
1.webview加载url的方式
2.webview的配置
(1)WebSettings
(2)WebViewClient
(3)WebChoromeClient
---------------------------------------------
1.webview加载url的方式
使用loadUrl方法可以加载本地或者远程的url
(1)本地资源:
比如html文件在assets目录下,可以采用这种方式(wv为webView对象):
wv.loadUrl("file:///android_asset/test1.html");
(2)远程资源:
直接将地址字符串传入即可。
wv.loadUrl("http://blog.csdn.net");
注意,访问远程资源必须加上权限:
<uses-permission android:name="android.permission.INTERNET"/>
其实除了loadurl方式,你也可以调用LoadData 或者 loadDataWithBaseURL方法。
2.webView的配置:
(1)WebSettings
WebSettings用来设置WebView的属性和状态。可以通过如下方式获取该对象:
WebSettings webSettings = wv.getSettings();
得到该对象后便可设置一些属性:
(1)setAllowFileAccess(boolean allow); //设置启用或禁止访问文件数据
(2)setBuiltInZoomControls(boolean enabled); //设置是否支持缩放
(3)setDefaultFontSize(int size); //设置默认的字体大小
(4)setJavaScriptEnabled(boolean flag); //设置是否支持JavaScript
(5)setSupportZoom(boolean support); //设置是否支持变焦
(2)WebViewClient
WebViewClient主要用来辅助WebView处理各种通知、请求等事件。
通过setWebViewClient方法设置,提供的方法也有很多,下面列举一部分:
(1)doUpdateVisitedHistory(WebView view, String url, boolean isReload); //更新历史记录
(2)onFormResubmission(WebView view, Message dontResend, Message resend);//重新请求网页数据
(3)onLoadResource(WebView view, String url); //加载指定网址提供的资源
(4)onPageFinished(WebView view, String url); //网页加载完毕
(5)onPageStarted(WebView view, String url, Bitmap favicon); //网页开始加载
(6)onReceivedError(WebView view, int errorCode, String description, String failingUrl); //报告错误信息
(3)WebChoromeClient
WebChromeClient主要用来辅助WebView处理Javascript的对话框、网站图标、网站标题以及网页加载进度等。通过WebView的setWebChromeClient()方法设置。
(1)onProgressChanged(WebView view, int newProgress)//监听网页加载进度
(2)onReceivedTitle(WebView view, String title)//监听网页标题
(3)onReceivedIcon(WebView view, Bitmap icon)//监听网页图标
小案例:
package com.example.webviewdemo1;
import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends Activity
{
protected static final String TAG = null;
private WebView wv = null;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wv = (WebView) findViewById(R.id.wv);
WebSettings settings = wv.getSettings();
settings.setBuiltInZoomControls(true);//设置是否显示缩放工具
settings.setSupportZoom(true);//设置是否支持缩放
settings.setJavaScriptEnabled(true);
settings.setDefaultFontSize(15);
//加载本地assets目录下的html
// wv.loadUrl("file:///android_asset/test1.html");
//加载远程网页
wv.loadUrl("http://blog.csdn.net");
wv.setWebViewClient(new WebViewClient()
{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
//让新打开的网页在当前webview显示
view.loadUrl(url);
return true;
}
});
wv.setWebChromeClient(new WebChromeClient()
{
//获得网页的加载进度(0-100)
@Override
public void onProgressChanged(WebView view, int newProgress)
{
if(newProgress <= 100)
{
Log.i(TAG,"progress"+newProgress);
}
}
//获得网页的标题
@Override
public void onReceivedTitle(WebView view, String title)
{
Log.i(TAG,"titile="+title);
}
@Override
public void onReceivedIcon(WebView view, Bitmap icon)
{
// TODO Auto-generated method stub
super.onReceivedIcon(view, icon);
}
});
}
}
演示效果:
logcat打印的日志: