详解Android中提示对话框(ProgressDialog和DatePickerDialog和TimePickerD

2019-12-10 19:13:48王冬梅

2.Date/TimePickerDialog只是供用户来选择日期时间,对于android系统的系统时间, 日期没有任何影响

他们两个的构造方法非常相似: DatePickerDialog(上下文;DatePickerDialog.OnDateSetListener()监听器;年;月;日)
TimePickerDialog(上下文;TimePickerDialog.OnTimeSetListener()监听器;小时,分钟,是否采用24小时制)

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
  private Button btn_date;
  private Button btn_time;
  private String result = "";
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    bindViews();
  }
  private void bindViews() {
    btn_date = (Button) findViewById(R.id.btn_date);
    btn_time = (Button) findViewById(R.id.btn_time);
    btn_date.setOnClickListener(this);
    btn_time.setOnClickListener(this);
  }
  @Override
  public void onClick(View v) {
    result = "";
    switch (v.getId()){
      case R.id.btn_date:
        Calendar cale1 = Calendar.getInstance();
        new DatePickerDialog(MainActivity.this,new DatePickerDialog.OnDateSetListener() {
          @Override
          public void onDateSet(DatePicker view, int year, int monthOfYear,
                     int dayOfMonth) {
            //这里获取到的月份需要加上1哦~
            result += "你选择的是"+year+"年"+(monthOfYear+1)+"月"+dayOfMonth+"日";
            Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show();
          }
        }
            ,cale1.get(Calendar.YEAR)
            ,cale1.get(Calendar.MONTH)
            ,cale1.get(Calendar.DAY_OF_MONTH)).show();
        break;
      case R.id.btn_time:
        Calendar cale2 = Calendar.getInstance();
        new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
          @Override
          public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
            result = "";
            result += "您选择的时间是:"+hourOfDay+"时"+minute+"分";
            Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show();
          }
        }, cale2.get(Calendar.HOUR_OF_DAY), cale2.get(Calendar.MINUTE), true).show();
        break;
    }
  }
}

最后一个用于显示信息的UI控件——PopupWindow(悬浮框),如果你想知道 他长什么样子,你可以打开你手机的QQ,长按列表中的某项,这个时候后弹出一个黑色的小 对话框,这种就是PopupWindow了,和AlertDialog对话框不同的是,他的位置可以是随意的; 另外AlertDialog是非堵塞线程的,而PopupWindow则是堵塞线程的