是否可以在启动MainActivity时查看ProgressBar?

时间:2014-12-04 12:02:05

标签: android

是否可以在加载MainActivity时显示第一个ProgressBar(中间)。并隐藏UI元素Upto ProgressBar是可见的。

我想在onCreate()方法上执行一个方法(Internet检查),并且ProgressBar应该是Visible upto方法执行并且还隐藏Background UI元素。

取决于方法执行,我将显示UI或使Dialog<没有互联网>。

简而言之,我的问题是,如何显示ProgressBar,并完全隐藏主要布局UI?方法执行完毕后,progressBar将关闭。

我想要实现的是,

 onCreate(...){

progressBar = (ProgressBar)find....
progressBar.setVisibility(View.GONE);

try{
    progressBar.setVisibility(View.VISIBLE);

    boolean flag=isInternet();

    if(flag){
    progressBar.setVisibility(View.GONE);
    // start my app task
    }
}catch(..){
            Inflate my Dialog 
   }
}

但它不起作用..

2 个答案:

答案 0 :(得分:3)

使用自定义界面在没有互联网连接时通知:

public interface WebCallListener{
  public void onCallComplete(String response);
  public void noInternetConnectivity();
}

在Web服务调用上实现接口:

public void getDataFromServer(final WebCallListener webCallListener){
   if(isNetwokReachable()){
       new AsyncTask<Void,Void,String>(){
          @Override
          protected String doInBackground(Void... params) {
              //write your web service call code here
              return null;
          }

          @Override
          protected void onPostExecute(String response) {
               super.onPostExecute(response);
               webCallListener.onCallComplete(response);
          }
       }.execute();
   }else{
      webCallListener.noInternetConnectivity();
   }
}

检查互联网连接:

public boolean isNetwokReachable() {
   final ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
   final NetworkInfo netInfo = connMgr.getActiveNetworkInfo();

   if (netInfo != null && netInfo.isConnected()) {
       return true;
   } else {
       return false;
   }
}

如何显示/隐藏进度;

pbrLoading.setVisibility(View.VISIBLE);
getDataFromServer(new WebCallListener() {
    @Override
    public void onCallComplete(String response) {
        pbrLoading.setVisibility(View.VISIBLE);
        // parse data from response
    }
    @Override
    public void noInternetConnectivity() {
        pbrLoading.setVisibility(View.GONE);
    }
});

答案 1 :(得分:2)

在布局XML中为外部布局创建id并使用findViewById。加载时隐藏该布局(布局中的所有View也将被隐藏)并在加载完成时显示。

parentLayout.setVisibility(View.GONE);
progressBar.setVisibility(View.VISIBLE);

boolean flag=isInternet();

if(flag){
progressBar.setVisibility(View.GONE);
// start my app task
parentLayout.setVisibility(View.VISIBLE);
}