我的 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>