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>