Android - 在BROWSER加载页面时加载进度条(NO WEBVIEW)

时间:2014-04-23 14:55:13

标签: android browser progress-bar

我正在创建一个简单的应用程序,只是为了好玩,而且在某些时候我希望它在浏览器中打开一个URl,并使用

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(browserIntent);

现在,我想在浏览器加载页面时显示加载进度条,但我得到的最好的是:

ProgressBar mProgress;
mProgress = (ProgressBar) findViewById(R.id.progressBar1);
mProgress.setProgress(0);
mProgress.incrementProgressBy(1); // lots of times
mProgress.setProgress(100);

这只需要用户的时间,可爱但无用。

当页面在后台加载时,是否有任何方法可以加载进度条?

感谢。


更新 - 没有WEBVIEW

我知道webview会更好,但是帖子的整个想法是知道在等待外部应用程序在后台打开时是否可以加载进度条。

2 个答案:

答案 0 :(得分:0)

您可以通过使其可见,然后下载来启动进度条。不过,我不会只是启动浏览器,而是将页面加载到WebView中。我会覆盖WebView并设置一个onPageFinished()监听器,在其中我将停止progressBar

答案 1 :(得分:0)

你的Xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

   <TextView
       android:layout_height="wrap_content"
       android:layout_width="fill_parent"
       android:text="loading web in WebView Client"
       android:textSize="20sp"
       android:gravity="center_horizontal">      
   </TextView>

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

   <WebView
       android:id="@+id/webview01"
       android:layout_height="wrap_content"
       android:layout_width="fill_parent"
       android:layout_weight="1">
   </WebView>


 </LinearLayout>

您的活动

public class WebViewClientDemoActivity extends Activity {
    /** Called when the activity is first created. */

    WebView web;
    ProgressBar progressBar;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        web = (WebView) findViewById(R.id.webview01);
        progressBar = (ProgressBar) findViewById(R.id.progressBar1);

        web.setWebViewClient(new myWebClient());
        web.getSettings().setJavaScriptEnabled(true);
        web.loadUrl("http://www.google.com");
    }

    public class myWebClient extends WebViewClient
    {
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            // TODO Auto-generated method stub
            super.onPageStarted(view, url, favicon);
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            // TODO Auto-generated method stub

            view.loadUrl(url);
            return true;

        }

        @Override
        public void onPageFinished(WebView view, String url) {
            // TODO Auto-generated method stub
            super.onPageFinished(view, url);

            progressBar.setVisibility(View.GONE);
        }
    }

    // To handle "Back" key press event for WebView to go back to previous screen.
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)
    {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && web.canGoBack()) {
            web.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
}

*请记住添加互联网权限

相关问题