WebView加载完成与显示完成

摘要:
想到来总结个,是因为项目中遇到了这样一个问题,在一个布局里有一个WebView,紧跟着webView有一个Button,当进入这个页面的时候,因为webView在没有加载出来的缘故,页面最上部先显示了button,等webView加载完成后,可以很明显的看到button的移动。

想到来总结个,是因为项目中遇到了这样一个问题,在一个布局里有一个WebView,紧跟着webView有一个Button,当进入这个页面的时候,因为webView在没有加载出来的缘故,页面最上部先显示了button,等webView加载完成后,可以很明显的看到button的移动。

为了解决这个事情,我先是想把Button GONE掉,然后做一个监听,等webView加载完成后再把Button显示出来,

于是

  1. mWebView.setWebViewClient(newWebViewClient()
  2. {
  3. @Override
  4. publicvoidonPageFinished(WebViewview,Stringurl)
  5. {
  6. //结束
  7. super.onPageFinished(view,url);
  8. }
  9. @Override
  10. publicvoidonPageStarted(WebViewview,Stringurl,Bitmapfavicon)
  11. {
  12. //开始
  13. super.onPageStarted(view,url,favicon);
  14. }
  15. });
逻辑上没了问题,但是实际效果上,却出现时灵时不灵的现象。

我判断不灵的时候是因为webView从缓存中读取数据导致监听加载结束不准确的原因,

我就设置不让webView从缓存中读取,每次都去网络获取

  1. mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
但是还是没用,最后分析这里的加载完成应该是指webView去加载网页或者获取数据成功后就算加载完成了,

而我们想要的效果是监听到webView显示出我们想要的数据后,再让Button显示出来,

于是我就尝试自定义WebView

  1. publicclassMyWebViewextendsWebView{
  2. publicinterfacePlayFinish{
  3. voidAfter();
  4. }
  5. PlayFinishdf;
  6. publicvoidsetDf(PlayFinishplayFinish){
  7. this.df=playFinish;
  8. }
  9. publicMyWebView(Contextcontext,AttributeSetattrs){
  10. super(context,attrs);
  11. }
  12. publicMyWebView(Contextcontext){
  13. super(context);
  14. }
  15. //onDraw表示显示完毕
  16. @Override
  17. protectedvoidonDraw(Canvascanvas){
  18. super.onDraw(canvas);
  19. df.After();
  20. }
  21. }

  1. privateMyWebViewmyWebView;
  1. myWebView.setDf(newPlayFinish(){
  2. @Override
  3. publicvoidAfter(){
  4. btn_submit.setVisibility(View.VISIBLE);
  5. }
  6. });

然后测试,大工高成,重写onDraw(),在应用中webView中内容开始绘制的时候再来让我们的button显示,解决了问题。

免责声明:文章转载自《WebView加载完成与显示完成》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux系统下查找安装包所在目录的六种方法Java安全之Axis漏洞分析下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

DataGrid控件用法

实现模版列有超连接外观,一点实现打开或者下载的功能。 <ItemTemplate><a href='http://t.zoukankan.com/download.aspx?DocTitle=<%# DataBinder.Eval(Container.DataItem,"DocTitle") %>'> <%# Dat...

U8客开插件-一、标准单据标准按钮执行前验证操作

今天要做的就是在标准的单据的标准按钮之前进行验证操作,如果验证通过执行保存,如果不通过给予提示不进行保存。 下面拿销售出库单的保存按钮进行举例: 第一步:在程序中 ctrl+Shift  点击保存之后用写字板,粘贴  key   取到 : 单据Key=0303、保存,按钮Tooltip:保存     F6,按钮Key:tlbSave; 第二步:VB工程及保...

qt 5 界面美化

大家都知道,用UI做起界面来非常方便,但是如果我们不熟练他的操作的话,做起来也会有不少布局的麻烦, 所以,我打算写一篇文章来记录自己参考大牛用代码写界面的文章,感谢百度,感谢各位QT大牛的帮助。 所谓代码布局,无非用到的是qss样式表,它与css样式表的语法形式差不多,下面废话不多说,直接进入正题。 由于,QT自带的窗口,不是那么美观,所以我之前写过一篇,...

Swift:UIKit中Demo(一)

关于Swift的基本概念及语法知识。我在前面的章节中已经介绍了非常多。这一节和下一节主要有针对性的解说Swift在实际UIKit开发中的使用场景及注意点。先来看看Demo的终于效果图。 Demo分析: 1. 界面上面有三个button,他们的宽度不一致。 2. 点击每一个button的时候。以下有红色下划线跟着"走动"。 一、 Storyboard中...

Unity自定义Button组件Transition

Unity自带的Button组件有三种不同的Transition(过渡)选项,分别是None,ColorTint,SpriteSwap, Animation。现在想自定义其他功能,比如在不同的状态下,按钮上的文字不同。 首先想到的是直接写一个脚本挂在Button上,实现UnityEngine.EventSystems中定义的IPointerEnterHan...

Unity3d—GUI按钮控件

这是自己的第一篇记录自己的技术文章,自己还是个菜鸟,有错误之处还望大家能够多多指点。1、在project视图中创建C#脚本,我命名为 Gui_test 2、然后打开该脚本,输入以下代码:1 usingSystem.Collections; 2 usingSystem.Collections.Generic; 3 usingUnityEngine; 4...