欢迎光临
梦想从学习开始!

2.6.0 其他几种常用对话框基本使用 | 小熊教程

Tips:您正在学习的是2.6.0 其他几种常用对话框基本使用 | 小熊教程系列。本文链接https://www.xxfxb.com/?p=10102 ,您可通过标签查询系列课程。小熊分享邦(www.xxfxb.com)祝您学习愉快!

本节引言:

上节我们对Dialog的父类:AlertDialog进行了学习,而本节我们来学习下几个常用的 Dialog的基本使用,他们分别是:ProgressDialog(进度条对话框),DatePickerDialog (日期选择对话框)和TimePickerDialog(时间选择对话框)~,话不多说,开始本节内容~


1.ProgressDialog(进度条对话框)的基本使用

我们创建进度条对话框的方式有两种:

  • 1.直接调用ProgressDialog提供的静态方法show()显示
  • 2.创建ProgressDialog,再设置对话框的参数,最后show()出来

代码示例

运行效果图

关键实现代码

MainActivity.java

 public class MainActivity extends AppCompatActivity implements View.OnClickListener{      private Button btn_one;     private Button btn_two;     private Button btn_three;     private ProgressDialog pd1 = null;     private ProgressDialog pd2 = null;     private final static int MAXVALUE = 100;     private int progressStart = 0;     private int add = 0;     private Context mContext = null;       //定义一个用于更新进度的Handler,因为只能由主线程更新界面,所以要用Handler传递信息     final Handler hand = new Handler()     {         @Override         public void handleMessage(Message msg) {             //这里的话如果接受到信息码是123             if(msg.what == 123)             {                 //设置进度条的当前值                 pd2.setProgress(progressStart);             }             //如果当前大于或等于进度条的最大值,调用dismiss()方法关闭对话框             if(progressStart >= MAXVALUE)             {                 pd2.dismiss();             }         }     };      @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);         mContext = MainActivity.this;         bindViews();     }      private void bindViews() {         btn_one = (Button) findViewById(R.id.btn_one);         btn_two = (Button) findViewById(R.id.btn_two);         btn_three = (Button) findViewById(R.id.btn_three);         btn_one.setOnClickListener(this);         btn_two.setOnClickListener(this);         btn_three.setOnClickListener(this);     }       @Override     public void onClick(View v) {         switch (v.getId()){             case R.id.btn_one:                 //这里的话参数依次为,上下文,标题,内容,是否显示进度,是否可以用取消按钮关闭                 ProgressDialog.show(MainActivity.this, "资源加载中", "资源加载中,请稍后...",false,true);                 break;             case R.id.btn_two:                 pd1 = new ProgressDialog(mContext);                 //依次设置标题,内容,是否用取消按钮关闭,是否显示进度                 pd1.setTitle("软件更新中");                 pd1.setMessage("软件正在更新中,请稍后...");                 pd1.setCancelable(true);                 //这里是设置进度条的风格,HORIZONTAL是水平进度条,SPINNER是圆形进度条                 pd1.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);                 pd1.setIndeterminate(true);                 //调用show()方法将ProgressDialog显示出来                 pd1.show();                 break;             case R.id.btn_three:                 //初始化属性                 progressStart = 0;                 add = 0;                 //依次设置一些属性                 pd2 = new ProgressDialog(MainActivity.this);                 pd2.setMax(MAXVALUE);                 pd2.setTitle("文件读取中");                 pd2.setMessage("文件加载中,请稍后...");                 //这里设置为不可以通过按取消按钮关闭进度条                 pd2.setCancelable(false);                 pd2.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);                 //这里设置的是是否显示进度,设为false才是显示的哦!                 pd2.setIndeterminate(false);                 pd2.show();                 //这里的话新建一个线程,重写run()方法,                 new Thread()                 {                     public void run()                     {                         while(progressStart < MAXVALUE)                         {                             //这里的算法是决定进度条变化的,可以按需要写                             progressStart = 2 * usetime() ;                             //把信息码发送给handle让更新界面                             hand.sendEmptyMessage(123);                         }                     }                 }.start();                 break;         }     }      //这里设置一个耗时的方法:     private int usetime() {         add++;         try{             Thread.sleep(100);         }catch (InterruptedException e) {             e.printStackTrace();         }         return add;     } } 

代码比较简单,而关于Progress的东西我们已经在前面学习过了,这里就不啰嗦了~


2.DatePickerDialog(日期选择对话框)与TimePickerDialog(时间选择对话框)

先要说明一点: Date/TimePickerDialog只是供用户来选择日期时间,对于android系统的系统时间, 日期没有任何影响,google暂时没有公布系统日期时间设置的API, 如果要在app中设置的话,要重新编译android的系统源码,非常麻烦!

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

代码示例

运行效果图

关键实现代码

MainActivity.java

 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;         }     } } 

代码同样很简单,就不解释了~


3.代码下载:

DialogDemo.zip

DialogDemo1.zip


本节小结:

好的,本节介绍了三个常用的Dialog,相比起以前的4.x的版本,5.0的这些原生控件, 显然要好看得多~就说这么多,谢谢~

赞(0) 打赏
未经允许不得转载:小熊分享邦 » 2.6.0 其他几种常用对话框基本使用 | 小熊教程

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏