1

Androidアプリで次の問題が発生します。プログレスバーのあるウェブビューを使用しています。正常に動作しますが、問題は、プログレスバーが再びINVISIBLEに設定されている場合(進行状況== 100)、Webビューがまだページを変更していないことです(再表示の直後に変更されます)。

要約すると、これは次のとおりです。1.ビュー内のWebview 2.表示されたWebview、表示されたプログレスバー3.なくなったプログレスバー、表示されたwebview4.Webviewは実際にページを変更します

私の目標は、3の前に4を発生させることです(したがって、実際にページを変更する前にWebビューを表示しないようにします。

これどうやってするの?

私のコードは次のとおりです。

パブリッククラスMyActivityはActivity{WebViewmWebView;を拡張します。ProgressBar 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