WebView載入完成與顯示完成的區別,webview載入

來源:互聯網
上載者:User

WebView載入完成與顯示完成的區別,webview載入

轉載請加地址:http://blog.csdn.net/jing110fei/article/details/46649079

想到來總結個,是因為項目中遇到了這樣一個問題,在一個布局裡有一個WebView,緊跟著webView有一個Button,當進入這個頁面的時候,因為webView在沒有載入出來的緣故,頁面最上部先顯示了button,等webView載入完成後,可以很明顯的看到button的移動。

為瞭解決這個事情,我先是想把Button GONE掉,然後做一個監聽,等webView載入完成後再把Button顯示出來,

於是

mWebView.setWebViewClient(new WebViewClient()  {      @Override  public void onPageFinished(WebView view, String url)   {  //結束  super.onPageFinished(view, url);  }    @Override    public void onPageStarted(WebView view, String url, Bitmap favicon)     {    //開始    super.onPageStarted(view, url, favicon);    }  });  
邏輯上沒了問題,但是實際效果上,卻出現時靈時不靈的現象。

我判斷不靈的時候是因為webView從緩衝中讀取資料導致監聽載入結束不準確的原因,

我就設定不讓webView從緩衝中讀取,每次都去網路擷取

mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); 
但是還是沒用,最後分析這裡的載入完成應該是指webView去載入網頁或者擷取資料成功後就算載入完成了,

而我們想要的效果是監聽到webView顯示出我們想要的資料後,再讓Button顯示出來,

於是我就嘗試自訂WebView

public class MyWebView extends WebView{      public interface PlayFinish{          void After();      }      PlayFinish df;      public void setDf(PlayFinish playFinish) {          this.df = playFinish;      }      public MyWebView(Context context, AttributeSet attrs) {          super(context, attrs);      }      public MyWebView(Context context) {          super(context);      }      //onDraw表示顯示完畢      @Override      protected void onDraw(Canvas canvas) {          super.onDraw(canvas);          df.After();      }  }  

private MyWebView myWebView;
myWebView.setDf(new PlayFinish() {      @Override      public void After() {  btn_submit.setVisibility(View.VISIBLE);    }  });  

然後測試,大工高成,重寫onDraw(),在應用中webView中內容開始繪製的時候再來讓我們的button顯示,解決了問題。

歡迎交流。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.