天天看点

史上最全webview详解

webview在现在的项目中使用的频率应该还是非常高的。

我个人总觉得html5是一种趋势。找了一些东西,在此总结。

本篇最后有一个非常不错 的 html5activity 加载类,不想看的可以直接跳下载。

加载一个网页:

加载apk包中的一个html页面

webview.loadurl("file:///android_asset/test.html");

加载手机本地的一个html页面的方法:

webview.loadurl("content://com.android.htmlfileprovider/sdcard/test.html");

webviewclient就是帮助webview处理各种通知、请求事件的。

打开网页时不调用系统浏览器, 而是在本webview中显示:

webviewclient 方法

将上面定义的webviewclient设置给webview:

webchromeclient是辅助webview处理javascript的对话框,网站图标,网站title,加载进度等 :

方法中的代码都是由android端自己处理。

同样,将上面定义的webchromeclient设置给webview:

上面这是前提!!!

然后实现上面的方法。

android 调用js有个漏洞:

<a target="_blank" href="http://blog.csdn.net/leehong2005/article/details/11808557">http://blog.csdn.net/leehong2005/article/details/11808557</a>

前进、后退

清除缓存数据:

webview的状态:

但是注意:

webview调用destory时,webview仍绑定在activity上.这是由于自定义webview构建时传入了该activity的context对象,因此需要先从父容器中移除webview,然后再销毁webview:

判断webview是否已经滚动到页面底端 或者 顶端:

getscrolly() //方法返回的是当前可见区域的顶端距整个页面顶端的距离,也就是当前内容滚动的距离.

getheight()或者getbottom() //方法都返回当前webview 这个容器的高度

getcontentheight() 返回的是整个html 的高度,但并不等同于当前整个页面的高度,因为webview 有缩放功能, 所以当前整个页面的高度实际上应该是原始html 的高度再乘上缩放比例. 因此,更正后的结果,准确的判断方法应该是:

返回上一次浏览的页面

有一个非常不错的 html5activity 加载类帖出来:

文/wing_li(简书作者)

原文链接:http://www.jianshu.com/p/3fcf8ba18d7f

著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

上一篇: KMP算法
下一篇: 阿里面试