Mostrar barra de progreso mientras se carga

Tengo un botón en main.xml que se vinculará a otro xml que incluye información del servidor. Incluyo barra de progreso para evitar la pantalla en blanco mientras el sistema está cargando la información. Ya hice el código como se muestra a continuación, pero todavía no es lo que quería. el código siguiente "ESPERA" durante 1000 ms, solo se ejecutará el siguiente código. ¿Cómo puedo modificarlo para que la carga "TIEMPO DE ESPERA" dependa de la velocidad de Internet, si la conexión a internet es lenta, entonces la pantalla de la barra de progreso se mostrará durante más tiempo?

package com.android.myApps;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.TextView;

public class MainScr extends Activity {

    private final int WAIT_TIME = 1000;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {       
        super.onCreate(savedInstanceState);     
        setContentView(R.layout.MainScr);       
    }   

    public void onClickCategory(View view)
    {
        findViewById(R.id.mainSpinner1).setVisibility(View.VISIBLE);
        new Handler().postDelayed(new Runnable(){
            @Override
                public void run() {                          
                      Intent mainIntent = new Intent(MainScr.this, Category.class); 
                      MainScr.this.startActivity(mainIntent); 
                      MainScr.this.finish(); 
                      } 
            }, WAIT_TIME);
    }
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta