其他幾種常用對話方塊基本使用


本節引言:

上節我們對Dialog的父類別:AlertDialog進行了學習,而本節我們來學習下幾個常用的 Dialog的基本使用,他們分別是:ProgressDialog(進度條對話框),DatePickerDialog (日期選擇對話框)和TimePickerDialog(時間選擇對話框)~,話不多說,開始本節內容~


1.ProgressDialog(進度條對話框)的基本使用

我們建立進度條對話框的方式有兩種:

  • #1.直接呼叫ProgressDialog提供的靜態方法show()顯示
  • 2.建立ProgressDialog,再設定對話方塊的參數,最後show()出來

程式碼範例

運行效果圖

1.gif

#關鍵實作程式碼

MainActivity .java

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private Button b/)# ;
    private ProgressDialog pd1 = null;
    private ProgressDialog pd2 = null;
    private final static int MAXVALUE = 100  = 0;
    private Context mContext = null;


    //定義一個用於更新進度的Handler,因為只能由主執行緒更新介面,所以要用Handler傳遞訊息
    final Handler hand = new Handler(  Override
        public void handleMessage(Message msg) {
           123)
            {
                //且已設進度條的目前價值
                pd2.setProgress(progressStart);
         呼叫dismiss()方法關閉對話方塊
            if(progressStart >= MAXVALUE)
            {
                 }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
) {
super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mContext = MainActivity.this;##NainActivity。bindViews();
    }

#    private void bindViews() {
       tn_two = (Button) findViewById(R.id .btn_two);
        btn_three = (Button) findViewById(R.id.btn_three);
     setOnClickListener(this);
        btn_three.setOnClickListener(this) ;
    }

##    @Override
    public void onClick(View v) {
   case R.id.btn_one:
                //這裡的文字參數依序為,「標題,內容,是否顯示進度,是否可用取消按鈕關閉
      "資源加載中,請稍後...",false,true);
                break;
             pd1 = new ProgressDialog(mContext);
                //依序設定標題,內容,是否使用取消按鈕關閉,是否顯示進度
                pd1.setTitle("軟體更新");
                      pd1.setCancelable( true);
                //這裡是設定進度條的風格,HORIZONTAL是水平進度條,SPINNER是圓形進度條##  log.STYLE_HORIZONTAL);
                pd1.setIndeterminate(true);
//調用show()方法將ProgressDialog顯示出來
                pd1.show();
       case R.id.btn_three:
                //初始化屬性
         ##                add = 0;
               = new ProgressDialog(MainActivity.this);
                pd2.setMax(MAX );# ");
                pd2.setMessage("文件載入中,請稍後...");
                 pd2.setCancelable(false) ;
                pd2.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    
                pd2.setIndeterminate(false);
                //這裡的文字新建一個執行緒,重寫run()方法,
                new Thread()
   #                    public void run()
{
                        while(progressStart < MAX {
                            //這裡的演算法為決定的進度條約       progressStart = 2 * usetime() ;
                  把信息碼發送給handle讓更新界面
                            hand.sendEmptyMessage(123);
                        }
                    }
                }.start();
                break;
        }
    }

    //這裡設定耗時的方法:
    private int usetime() {
        add++;# sleep(100);
        }catch ( InterruptedException e) {
            e.printStackTrace();
        }##1  

程式碼比較簡單,而關於Progress的東西我們已經在前面學習過了,這裡就不囉嗦了~


2.DatePickerDialog(日期選擇對話框)與TimePickerDialog(時間選擇對話框)

先要說明一點: Date/TimePickerDialog只是供使用者選擇日期時間,對於android系統的系統時間, 日期沒有任何影響,google暫時沒有公佈系統日期時間設定的API, 如果要在app中設定的話,要重新編譯android的系統原始碼,非常麻煩!

他們兩個的建構方法非常相似:DatePickerDialog(上下文;DatePickerDialog.OnDateSetListener()監聽器;年;月;日)
TimePickerDialog(上下文;TimePickerDialog.OnTimeSetListener()監聽器;小時,分鐘,是否採用24小時制)

程式碼範例

#執行效果圖

2.gif

關鍵實作程式碼

MainActivity.java

公共類別MainActivity 擴充AppCompatActivity 實作View.OnClickListener{

    私有按鈕btn_date;
    私有按鈕btn_time;##  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ivity_main);
        bindViews();
    }

    private void bindViews() {
        btn_date = (Button) findViewById yId(R.id.btn_time);

btn_date.setOnClickListener(this);
        btn_time.setOnClickListener(this);
    }

      結果 = "";
        switch (v.getId()){
            case R.id. Instance();
                new DatePickerDialog(MainActivity.this,new Date) PickerDialog.OnDateSetListener(OnDateSetListener(OnDateSetListener ) {
                   @Override
            5 #                        //以這裡中所獲得的月份需求中加上1~喔
                        結果 += "你選擇的是"+year+"年"+(monthOfYear+1)+"月"+dayOfMonth+"日";
             LENGTH_SHORT).show( );
                    }
                }
                       ,cale1.get(日曆.年)
                        ,cale1.get(日曆.月)
                        ,cale1.get(Calendar.DAY_OF_MONTH)).show( );
               break;
            case .getInstance();
                new TimePickerDialog(MainActivity.this, new TimePi ckerDialog.OnTimeSetListenerener() @覆蓋
                    public void onTimeSet(TimePicker view, int hourOf       結果 = "";
                      min+"分" ;
                        Toast.makeText(getApplicationContext(), 結果, Toast.LENGTH_SHORT#();}
                }, cale2.get(Calendar.HOUR_OF_DAY), cale2.get(Calendar.MINUT
        }
    }
}
程式碼同樣很簡單,就不解釋了~


3.程式碼下載:

DialogDemo.zip

DialogDemo1.zip


本節小結:

好的,本節介紹了三個常用的Dialog,相比起以前的4.x的版本,5.0的這些原生控件, 顯然好看很多~就說這麼多,謝謝~