沪江Android 开发教你如何理解WebView(下)
听说点击蓝色字关注的人,最近de运气会好到爆表作者:kymjs张涛沪江教育Android开发工程师...
听说点击 蓝色字 关注的人,最近de运气会好到爆表
作者:kymjs张涛沪江教育 Android 开发工程师,《KJFrameForAndroid》开发框架作者。爱看书,爱敲码,善于交流,乐于分享。曾担任电影《天籁:一万年以后》新媒体产品运营。
作为Android开发者,我们都知道在手机中内置了一款高性能 webkit 内核浏览器,在 SDK 中封装为一个叫做 WebView 组件。
今天继续跟大家讲一讲WebView滚动状态监听和获取session和写cookie的方法。了解更多,请戳这里:
沪江Android 开发教你如何理解WebView(上)
判断 WebView 是否已经滚动到页面底端
在View中有一个getScrollY()方法,可以返回当前可见区域的顶端距整个页面顶端的距离,也就是当前内容滚动的距离。
还有getHeight()或者 getBottom()方法都返回当前 View 这个容器的高度。
在ViewView中还有getContentHeight() 方法可以返回整个 html 页面的高度,但并不等同于当前整个页面的高度 ,因为 WebView 有缩放功能。你可以通过如下代码来启动或关闭webview的缩放功能。所以当前整个页面的高度实际上应该是原始 html 的高度再乘上缩放比例. 因此,更正后的结果 ,准确的判断方法应该是:WebView获取服务器中的 session 问题
接下来我们讲如下两个问题:
1、Android 中的 WebView 如何获取服务器页面的 jsessionid 的值
2、Android 的 WebView 又是如何把得到的 jsessionid 的值在 set 到服务器中,一致达到他们在同一个 jsessionid 的回话中.
其实非常非常简单,只不过是几个方法罢了:WebView清除本地cookies
首先,要清除肯定要会添加,这里给大家提供一个工具方法:在使用网页版淘宝或百度登录时,WebView会自动登录上次的帐号!(因为WebView 记录了帐号和密码的cookies) 所以,需要清除 SessionCookie也是有必要的。
那么CookieManager同样也为我们提供了清除cookie的方法
CookieManager.getInstance().removeSessionCookie();
这里顺便说一下WebView本身也是会记录html缓存的,上一篇博客中我讲了一种通过文件操作去清理缓存的方法,后来我又发现,其实webview本身就提供了清理缓存的方法,其中参数true是指是否包括磁盘文件也一并清除,传true就和我们昨天的讲的效果是一样的了:讲一个案例
讲了这么多的理论知识,最后讲一个使用案例。WebView在实际使用中可以分为两种使用方法,第一种就是类似于QQ微信那种,使用loadUrl直接去显示一个链接,这种方式太简单了,传一个url就行,我就不多说了。
那么需要详细讲的是第二种,类似的实现大家可以看看开源中国客户端,网易新闻客户端,爱看博客,等客户端的实现方式,它们实际上也是通过webview来显示的一个网页内容,但是并不是单纯的loadurl,而是以字符串的形式去加载一个已经获取到了的html源代码。这样做的好处在于显示的页面可以完全的根据自己喜好来定义,比如我想在末尾添加一张图片,那么简单,在这个html字符串的末尾插入一个img标签就可了。至于使用方法,其实我们在上一篇博客的时候有提到过:
myWebView.loadData(htmlText,”text/html”, “utf-8”);
其中htmltext就是我们需要加载的html字符串,使用这个方法可以直接将这个字符串作为网页来显示。
最后总结一下两种方法的适用场景,前一种载入链接的方法适合一个界面(Activity或Fragment)只有一个WebView或者说WebView占很大一块的时候,同时我们要显示的内容是未知的,那么自然是使用loadurl方法更合适,例如QQ聊天的时候对方发送一条链接,当QQ解析出这个文本是一个网址时就通过webview去加载它。而后一种则适合于定制化内容,一般是那种你可以明确的制度网页内容以及要显示的内容时使用,至于好处就是上面说的,定制性要好很多。
转载自作者博客
原文链接:http://kymjs.com/code/2015/05/03/01/
猜你喜欢以下文章
算完给跪了!一个月你要赚多少才能撑起一个家?
10年后的腾讯QQ……
一张图看懂在百度和乐视工作的区别
黑客是如何发现女朋友出轨的
『 麦子学院 』
我们聊的不止是技术,还有风月
我们聊的不止是技术,还有风月
麦子学院
www.maiziedu.com
发现最新鲜的资讯
每天推送IT教育干货
每天推送IT教育干货
关注 麦班长
微信扫一扫关注公众号