2010-01-26 17 views

cevap

45

kullanabilirsiniz bir ProgressDialog:

ProgressDialog dialog = new ProgressDialog(this); 
dialog.setMessage("Thinking..."); 
dialog.setIndeterminate(true); 
dialog.setCancelable(false); 
dialog.show(); 

sizin Activity üstünde aşağıdaki iletişim kutusu gösterecektir Yukarıdaki kod: Bir İlerleme görüntüleyebilir (ek veya)

alt text

Alternatif

Activity ürününüzün başlık çubuğunda göstergesi. Aşağıdaki kodu kullanarak Activity ait onCreate() yöntemin üst kısmına yakın

alt text

You need to request this as a feature:

setProgressBarIndeterminateVisibility(true); 

ve çevirin: Sonra

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 

böyle açın bunun gibi kapalı:

İşte
+0

sorun iletişim kutusunu görüntüleme sonra ben sonunda görünen iletişim kutusunun görüntülenmesini engelleyen nispeten uzun bir tedavi ran olmasıdır artık ihtiyacım olmadığında tedavi! – Arutha

+1

AsyncTask'a bir göz atın. OnPreExecute() 've' onPostExecute 'içindeki 'ProgressDialog' öğesini görüntüleyip saklıyorsunuz ve işinizi doInBackground'da yapıyorsunuz. http://android-developers.blogspot.com/2009/05/painless-threading.html –

+0

Ayrıca Android Geliştirici Kılavuzu "Duyarlılık İçin Tasarlama" konusuna da değinebilirsin http://developer.android.com/guide/practices/ design/responsiveness.html –

3

setProgressBarIndeterminateVisibility(false); 
AsyncTask kullanarak bunu yapmanın basit bir örneğidir:

public class MyActivity extends Activity { 

    protected void onCreate(Bundle savedInstanceState) { 

     ... 

     new MyLoadTask(this).execute(); //If you have parameters you can pass them inside execute method 

    } 

    private class MyLoadTask extends AsyncTask <Object,Void,String>{   

     private ProgressDialog dialog; 

     public MyLoadTask(MyActivity act) { 
      dialog = new ProgressDialog(act); 
     }  

     protected void onPreExecute() { 
      dialog.setMessage("Loading..."); 
      dialog.show(); 
     }  

     @Override 
     protected String doInBackground(Object... params) {   
      //Perform your task here.... 
      //Return value ... you can return any Object, I used String in this case 

      try { 
       Thread.sleep(6000); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
      return(new String("test")); 
     } 

     @Override 
     protected void onPostExecute(String str) {   
      //Update your UI here.... Get value from doInBackground .... 
      if (dialog.isShowing()) { 
       dialog.dismiss(); 
      }   
     } 
    }