android AlertDialog控件(日期,时间,进度条等)

AlertDialog控件

  • 自定义对话框通过getView方法也可以显示自定义布局
  • PopupWindow可以以下拉和指定位置的方式弹出一个窗口
  • 日期和时间控件对话框是AlertDialog的子类,它们通常使用在特定场合
  • ProgressDialog是进度对话框,通常与Handler一起使用,用来提示用户等待耗时操作。

一、时间控件

 /**
     * 时间控件
     * @param v
     */
    public void btnClick(View v){
        Calendar calendar = Calendar.getInstance();
        new DatePickerDialog(this,
                new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker datePicker, int year, int month, int dayOfMonth) {
                         String text = "新选择了:"+ year + "年" + month + "月" + dayOfMonth + "日";
                        Toast.makeText(DatePickDialogActivity.this, text, Toast.LENGTH_SHORT).show();
                    }
                }
                ,calendar.get(Calendar.YEAR)
                ,calendar.get(Calendar.MONTH)
                ,calendar.get(Calendar.DAY_OF_MONTH)).show();
    }

android AlertDialog控件(日期,时间,进度条等)_第1张图片

二、时间控件

/**
     * 时间控件
     * @param v
     */
    public void btnClick2(View v){
        Calendar calendar = Calendar.getInstance();
        new TimePickerDialog(this,
                new TimePickerDialog.OnTimeSetListener(){
                    @Override
                    public void onTimeSet(TimePicker timePicker, int hourOfDay, int minute) {
                        String text = "新选择了:"+hourOfDay + "时" + minute + "分";
                        Toast.makeText(DatePickDialogActivity.this, text, Toast.LENGTH_SHORT).show();
                    }
                }
                // 设置初始时间
                ,calendar.get(Calendar.HOUR_OF_DAY)
                ,calendar.get(Calendar.MINUTE)
                // true表示采用24小时时差
                ,true).show();
    }

android AlertDialog控件(日期,时间,进度条等)_第2张图片

三、进度对话框

 Handler handler = new Handler(){
        // 主线程(UI)线程
        @Override
        public void handleMessage(@NonNull Message msg) {
            pd.dismiss();
        }
    };

    /**
     * 进度条控件
     * @param v
     */
    public void btnClick3(View v){
        showProgress();
        // 新建一个子线程
        new Thread(){
            @Override
            public void run() {
                for (int i = 0; i < 3; i++) { // 耗时3秒
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                handler.sendEmptyMessage(0);
            }
        }.start();
    }

    ProgressDialog pd;
    public  void showProgress(){
        pd = new ProgressDialog(this);
        pd.setTitle("任务执行中...");
        pd.setMessage("请稍后...");
        pd.setCancelable(true);
        pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        pd.show();

    }

android AlertDialog控件(日期,时间,进度条等)_第3张图片

四、水平进度条

 Handler handler = new Handler(){
        // 主线程(UI)线程
        @Override
        public void handleMessage(@NonNull Message msg) {
            if(msg.what == 0){
                pd.dismiss();
            }else if(msg.what == 1){
                pd.setProgress(msg.arg1);
            }
        }
    };

    /**
     * 进度条控件
     * @param v
     */
    public void btnClick3(View v){
        showProgress();
        // 新建一个子线程
        new Thread(){
            @Override
            public void run() {
                for (int i = 0; i < 10; i++) { // 耗时
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    Message message = Message.obtain();
                    message.arg1 = i;
                    message.what = 1;
                    handler.sendMessage(message);
                }
                handler.sendEmptyMessage(0);
            }
        }.start();
    }

    ProgressDialog pd;
    public  void showProgress(){
        pd = new ProgressDialog(this);
        pd.setTitle("任务执行中...");
        pd.setMessage("请稍后...");
        pd.setCancelable(true);
        pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        pd.setMax(10);
        pd.show();

    }

android AlertDialog控件(日期,时间,进度条等)_第4张图片

你可能感兴趣的:(android)