Android之WebView详解

来源:互联网 发布:新店能开淘宝直播吗 编辑:程序博客网 时间:2024/06/06 02:10


Android提供WebView来加载网页数据,也可以加载本地的资源文件。使用WebView有两种方式,一种是直接在XML布局文件中定义WebView然后在Activity中使用findviewById()找到这个控件,还有一种方式是使用代码直接new一个View对象然后添加到ViewGroup中。与WebView相关的类有两个,一个是WebSettings,该类可以对WebView的一些属性进行设置,比如是否显示网页的图片,js的支持,缩放,网页字体等;还有就是WebViewClient和Webchromclient,这前一个设置可以对js处理,点击超链接不打开本地浏览器,后一个设置对一些特殊的js支持,比如alert。下面对这些类里常用的一些方法做个介绍:

webView:

clearCache(boolean includeDiskFiles)//清除缓存

clearHistory() //清除历史 前进和后退

getSettings() //获取WebSetting

goBack() //返回上一页面

goForward() //前一页面

loadUrl(String url) //打开一个页面

reload() //重新加载当前页面

stopLoading() //停止加载

setScrollBarStyle(int style) //指定

loadData("HTMLString") //加载HTML 

WebSettings:

setAllowFileAccess 启用或禁止WebView访问文件数据
setBlockNetworkImage 是否显示网络图像
setBuiltInZoomControls 设置是否支持缩放
setCacheMode 设置缓冲的模式
setDefaultFontSize 设置默认的字体大小
setDefaultTextEncodingName 设置在解码时使用的默认编码
setFixedFontFamily 设置固定使用的字体
setJavaSciptEnabled 设置是否支持Javascript
setLayoutAlgorithm 设置布局方式
setLightTouchEnabled 设置用鼠标激活被选项
setSupportZoom 设置是否改变焦点

WebViewClient:

doUpdate VisitedHistory 更新历史记录
onFormResubmission 应用程序重新请求网页数据
onLoadResource 加载指定地址提供的资源
onPageFinished 网页加载完毕
onPageStarted 网页开始加载
onReceivedError 报告错误信息
onScaleChanged WebView发生改变
shouldOverrideUrlLoading 控制新的连接在当前WebView中打开

WebChromeClient:

onCloseWindow 关闭WebView
onCreateWindow 创建WebView
onJsAlert 处理Javascript中的Alert对话框
onJsConfirm处理Javascript中的Confirm对话框
onJsPrompt处理Javascript中的Prompt对话框
onProgressChanged 加载进度条改变
onReceivedlcon 网页图标更改
onReceivedTitle 网页Title更改
onRequestFocus WebView显示焦点

ok,关键知识点就这些啦,关于web的API还是很丰富的,使用起来也很简单,下面就用一个具体的例子来看看:

public class MainActivity extends Activity {// 地址一定要加上 http:// 作为开头哦,不然会报错private String url = "http://blog.csdn.net/qq379454816/article/details/49248787";private String TAG = "MainActivity";private WebView webView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 得到对象webView = (WebView) findViewById(R.id.webView);// 来一个WebViewclientWebViewClient client = new WebViewClient() {// 网页加载完毕@Overridepublic void onPageFinished(WebView view, String url) {super.onPageFinished(view, url);Log.e(TAG, "网页加载完毕!");}// 网页开始加载@Overridepublic void onPageStarted(WebView view, String url, Bitmap favicon) {super.onPageStarted(view, url, favicon);Log.e(TAG, "网页开始加载!");}// 网页加载中,会多次调用@Overridepublic void onLoadResource(WebView view, String url) {super.onLoadResource(view, url);Log.e(TAG, "网页加载中!");}// 是否在本app中浏览超链接@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {view.loadUrl(url);// 消费掉事件return true;}};// 再来一个WebChromClient对象WebChromeClient chrome = new WebChromeClient() {};// 将两个client都设置到WebView上面webView.setWebChromeClient(chrome);webView.setWebViewClient(client);// 得到WebSetting对象WebSettings setting = webView.getSettings();// 支持缩放setting.setBuiltInZoomControls(true);setting.setBlockNetworkImage(true);setting.getJavaScriptEnabled();// 都搞定之后就显示网页啦webView.loadUrl(url);}@Overridepublic void onBackPressed() {super.onBackPressed();// 处理返回按钮if (webView.canGoBack()) {webView.goBack();}System.exit(0);}}

扫描关注我的微信公众号:


Demo下载



0 0