1

我的 Android 应用程序存在以下问题。我正在使用具有进度条的 webview。它工作正常,但问题是当进度条再次设置为不可见时(进度 == 100),webview 还没有更改页面(它在重新显示后不久就这样做了)。

总而言之,就是这样: 1. 视图中的 Webview 2. Webview 消失,进度条可见 3. Progressbar 消失,webview 可见 4. Webview 实际上改变了页面

我的目标是在 3 之前发生 4 (因此在实际更改页面之前不显示 webview。

我怎样才能做到这一点?

我的代码如下:

公共类 MyActivity 扩展 Activity { WebView mWebView; 进度条 pd = null;

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
  requestWindowFeature(Window.FEATURE_NO_TITLE);

    setContentView(R.layout.main);
    pd = (ProgressBar) findViewById(R.id.web_view_progress_bar);
    mWebView = (WebView) findViewById(R.id.webview);

    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setDomStorageEnabled(true);
    mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); 
    mWebView.loadUrl("http://www.myurl.com");
    mWebView.setWebViewClient(new WebViewClient());        
    mWebView.setWebChromeClient(new WebChromeClient() {
        public void onProgressChanged(WebView view, int progress) {
           if(progress < 100 && pd.getVisibility() == ProgressBar.GONE){
               mWebView.setVisibility(WebView.GONE);
             pd.setVisibility(ProgressBar.VISIBLE);
           }
           pd.setProgress(progress);
           if(progress == 100 && mWebView.getVisibility() == WebView.GONE) {
             pd.setVisibility(ProgressBar.GONE);
             mWebView.setVisibility(WebView.VISIBLE);
           }
        }
    });
}
  @Override
   public void onBackPressed(){                  
        if(mWebView.canGoBack())            
           mWebView.goBack(); 
        else
           super.onBackPressed();   
        } 
   }

class ClassWebViewClient extends WebViewClient {
   @Override
   public boolean shouldOverrideUrlLoading(WebView view, String url) {
      return super.shouldOverrideUrlLoading(view, url);
   } 
}

布局:

android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">

<ProgressBar
    android:id="@+id/web_view_progress_bar"
    style="?android:attr/progressBarStyle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:visibility="gone" >
</ProgressBar>

<WebView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/webview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:visibility="visible">
</WebView>

4

0 回答 0