如何使用进度条

时间:2019-06-01 04:38:43

标签: android progress-bar

我正在使用Android Studio制作应用程序,并且我添加了下拉菜单以刷新应用程序中的url,并且之后我的进度条不起作用之后,我的意思是当我下拉默认进度条显示但该屏幕之后仅显示空白页时直到加载了url。这是我的xml文件

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <WebView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/webview"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_above="@+id/adView" />



</ScrollView>


<ProgressBar
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_gravity="center"
    android:id="@+id/progressBar"/>

在Java文件中,我使用它

 myWebView.loadUrl("http://m.wahstatus.com/ws/english-status/?orderby=rand");
                WebSettings webSettings = myWebView.getSettings();
                myWebView.getSettings().setLoadWithOverviewMode(true);
                webSettings.setJavaScriptEnabled(true);
                swipeView.setColorScheme(android.R.color.holo_blue_dark,android.R.color.holo_blue_light, android.R.color.holo_green_light,android.R.color.holo_green_dark);
                swipeView.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener()
                {
                    @Override
                    public void onRefresh()
                    {
                        swipeView.setRefreshing(true);
                        ( new Handler()).postDelayed(new Runnable()
                        {
                            @Override
                            public void run()
                            {
                                swipeView.setRefreshing(false);
                                myWebView.loadUrl("http://m.wahstatus.com/ws/english-status/?orderby=rand");
                            }
                        }, 1000);
                    }

                });


                myWebView.setWebViewClient(new WebViewClient() {
                    public void onPageStarted(WebView view, String url, Bitmap favicon) {
                        super.onPageStarted(view, url, favicon);
                        findViewById(R.id.progressBar).setVisibility(View.VISIBLE);
                    }
                    @Override
                    public void onPageFinished(WebView view, String url) {
                        findViewById(R.id.progressBar).setVisibility(View.GONE);
                    }

页面加载的进度栏不起作用

2 个答案:

答案 0 :(得分:2)

这是因为您假设网页将在一秒钟内加载,

建议,异步读取并同步

解决方案:您有页面完成和页面启动的回调。根据您的需要使用它们。

第二,看来您的根目录布局是SwipeRefreshLayout。它将带有其默认进度条,为什么要添加一个新进度条?

答案 1 :(得分:0)

您应该添加一个webchromeClient()

 webview.setWebChromeClient(new WebChromeClient() {
            public void onProgressChanged(WebView view, int progress)   
            {
               findViewById(R.id.progressBar).setProgress(progress * 100); //Make the bar disappear after URL is loaded
            });