news 2026/4/29 16:58:09

Android 基础入门教程2.6.0 其他几种常用对话框基本使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Android 基础入门教程2.6.0 其他几种常用对话框基本使用

2.6.0 其他几种常用对话框基本使用

分类Android 基础入门教程

本节引言:

上节我们对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的这些原生控件, 显然要好看得多~就说这么多,谢谢~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 16:56:26

百考通三重智能护航,助你轻松过审!

还在为论文查重率居高不下而焦虑&#xff1f;担心AI生成内容被系统识别导致学术不端&#xff1f;别慌&#xff01;百考通全新上线“论文降重/降AIGC”智能服务&#xff0c;为你量身打造三重解决方案&#xff0c;一站式解决所有痛点&#xff0c;让你的论文质量与原创性双达标&am…

作者头像 李华
网站建设 2026/4/17 5:35:12

百考通解锁学术研究新范式,让文献综述不再是“拦路虎”

在浩瀚的学术海洋中&#xff0c;每一位研究者都曾经历过这样的困境&#xff1a;面对堆积如山的文献&#xff0c;如何高效筛选&#xff1f;如何精准把握研究脉络&#xff1f;如何系统梳理国内外进展并提炼创新点&#xff1f;如何确保综述内容权威、结构严谨、符合规范&#xff1…

作者头像 李华
网站建设 2026/4/18 17:20:58

百考通智能写作,三步搞定优质论文

还在为论文写作熬夜爆肝&#xff1f;面对开题报告毫无头绪&#xff1f;文献综述写得痛苦不堪&#xff1f;现在&#xff0c;百考通智能写作平台带来全新解决方案&#xff0c;通过智能化、流程化的操作&#xff0c;让论文写作变得如此简单&#xff01;极简操作&#xff1a;三大步…

作者头像 李华
网站建设 2026/4/25 6:13:54

论文季的血泪史终结者:用AI全流程攻克毕业论文难关

凌晨三点&#xff0c;小李揉了揉发红的眼睛&#xff0c;文档上的字数统计依然停留在“1&#xff0c;243/15&#xff0c;000”这个令人绝望的数字。她已经连续三周每天睡眠不足五小时&#xff0c;而导师刚刚发来的邮件中&#xff0c;“结构松散、创新不足、格式混乱”的批注像一…

作者头像 李华
网站建设 2026/4/29 14:53:29

基于Python 企业员工管理系统(源码+数据库+文档)

企业员工管理 目录 基于PythonDjango企业员工管理系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于PythonDjango企业员工管理系统 一、前言 博主介绍&#xff1a…

作者头像 李华
网站建设 2026/4/28 19:43:43

NF-κB信号通路中p105/p50的生成与调控机制是什么?

一、NF-κB通路为何是细胞应激与免疫应答的核心枢纽&#xff1f;核因子-κB&#xff08;NF-κB&#xff09;信号通路是细胞内一个高度保守且至关重要的转录调控网络。它能够响应多种胞内外刺激&#xff0c;包括促炎细胞因子、病原体相关分子模式&#xff08;如细菌脂多糖&#…

作者头像 李华