Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android學習筆記之ProgressDialog的使用

android學習筆記之ProgressDialog的使用

編輯:關於Android編程

  在很多PC軟件或手機軟件中,我們都會看見 “加載中...” 類似的對話框,當然,在android應用程序中也是如此。如果我們想在android應用程序中使用這樣的效果,那麼就需要用到ProgressDialog。首先,我們來看一下ProgressDialog這個類。

       ProgressDialog類繼承自AlertDialog類,同樣存放在android.app包中。ProgressDialog有兩種形式,一種是圓圈旋轉形式,一種是水平進度條形式,選擇哪種形式可以通過以下兩個屬性值來設定:

 

static int STYLE_HORIZONTAL
          Creates a ProgressDialog with a horizontal progress bar.
static int STYLE_SPINNER
          Creates a ProgressDialog with a ciruclar, spinning progress bar.

注意,當設置為水平進度條形式時,進度的取值范圍為0—10000。

 

ProgressDialog的構造方法有以下兩種:

 

ProgressDialog(Context context)
           
ProgressDialog(Context context, int theme)
           

 

 除了構造方法外,ProgressDialog還提供的如下的靜態方法返回ProgressDialog對象:

 

static ProgressDialog show(Context context, CharSequence title, CharSequence message)
           
static ProgressDialog show(Context context, CharSequence title, CharSequence message, boolean indeterminate)
           
static ProgressDialog show(Context context, CharSequence title, CharSequence message, boolean indeterminate, boolean cancelable)
           
static ProgressDialog show(Context context, CharSequence title, CharSequence message, boolean indeterminate, boolean cancelable, DialogInterface.OnCancelListener cancelListener) 

 

需要留意的是第一個參數必須是目前運行的Activity的Context。

 

       android的ProgressDialog必須要在後台程序運行完畢前,以dismiss()方法來關閉取得焦點的對話框,否則程序就會陷入無法終止的無窮循環中。在線程中,不得有任何更改Context或parent View的任何狀態,文字輸出等時間,因為線程裡的Context與View並不屬於parent,兩者之間也沒有關聯。

 

我們以下面一個簡單的程序來學習ProgressDialog的應用:

[java]   public class MainActivity extends Activity  

    private Button button=null; 
    public ProgressDialog dialog=null; 
    @Override 
    protected void onCreate(Bundle savedInstanceState)  
    { 
        super.onCreate(savedInstanceState); 
        super.setContentView(R.layout.activity_main); 
        this.button=(Button)super.findViewById(R.id.button); 
        this.button.setOnClickListener(new OnClickListener()  
        {            
            @Override 
            public void onClick(View v)  
            { 
                final CharSequence strDialogTitle=MainActivity.this.getString(R.string.str_dialog_title); 
                final CharSequence strDialogBody=MainActivity.this.getString(R.string.str_dialog_body); 
                //顯示Progress對話框  
                dialog=ProgressDialog.show(MainActivity.this,strDialogTitle,strDialogBody,true); 
                 
                new Thread() 
                { 
                    @Override 
                    public void run() 
                    { 
                        try 
                        { 
                            //表示後台運行的代碼段,以暫停3秒代替  
                            sleep(3000); 
                        } 
                        catch (InterruptedException e)  
                        { 
                            e.printStackTrace(); 
                        } 
                        finally 
                        { 
                            //卸載dialog對象  
                            dialog.dismiss(); 
                        } 
                    } 
                     
                }.start(); 
            } 
        }); 
    } 
 

public class MainActivity extends Activity
{
    private Button button=null;
 public ProgressDialog dialog=null;
 @Override
 protected void onCreate(Bundle savedInstanceState)
 {
  super.onCreate(savedInstanceState);
  super.setContentView(R.layout.activity_main);
  this.button=(Button)super.findViewById(R.id.button);
  this.button.setOnClickListener(new OnClickListener()
  {   
   @Override
   public void onClick(View v)
   {
    final CharSequence strDialogTitle=MainActivity.this.getString(R.string.str_dialog_title);
    final CharSequence strDialogBody=MainActivity.this.getString(R.string.str_dialog_body);
    //顯示Progress對話框
    dialog=ProgressDialog.show(MainActivity.this,strDialogTitle,strDialogBody,true);
    
    new Thread()
    {
     @Override
     public void run()
     {
      try
      {
       //表示後台運行的代碼段,以暫停3秒代替
       sleep(3000);
      }
      catch (InterruptedException e)
      {
       e.printStackTrace();
      }
      finally
      {
       //卸載dialog對象
       dialog.dismiss();
      }
     }
     
    }.start();
   }
  });
 }

}
該程序布局管理器僅需一個Button組件(id為button)即可,此處不再給出。

注意,為了代碼更加符合規范,本程序在strings.xml中定義了如下字符串資源:

[html]  <?xml version="1.0" encoding="utf-8"?> 
<resources> 
 
    <string name="app_name">demo2</string> 
    <string name="action_settings">Settings</string> 
    <string name="hello_world">Hello world!</string> 
    <string name="execute">執行</string> 
    <string name="str_dialog_title">請稍等片刻</string> 
    <string name="str_dialog_body">正在執行...</string> 
 
</resources> 

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">demo2</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>
    <string name="execute">執行</string>
    <string name="str_dialog_title">請稍等片刻</string>
    <string name="str_dialog_body">正在執行...</string>

</resources>
程序運行效果截圖:

 

 

\

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved