首页 > 其他分享 >常用对话框基本使用

常用对话框基本使用

时间:2023-03-19 21:32:22浏览次数:32  
标签:基本 常用 btn 对话框 show pd2 private ProgressDialog

常用的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;
}
}

关于该程序的编写,前面也有相关的叙述。

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

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

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

代码示例

运行效果图

常用对话框基本使用_进度条_02

关键实现代码

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

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

标签:基本,常用,btn,对话框,show,pd2,private,ProgressDialog
From: https://blog.51cto.com/u_15641375/6131358

相关文章

  • RTOS 最常用的一种扩展— AT 设备包
    RTOS使用的是模块方式,以便于扩展,这一点跟  类似。各种软件包可以让开发者将RTOS用于任何想要的目标设备。RTOS最常用的一种扩展是AT设备包,它包含各种不同AT设备(......
  • 常用Markdown语法学习
    Markdown语法学习标题语法一共有六级标题一级标题二级标题三级标题四级标题五级标题六级标题用"#"号代表标题等级,"#"号越多,标题等级越低注意!"#"号和标题文字......
  • 常用JVM参数
    -XX:+PrintCommandLineFlags打印那些已经被用户或者JVM设置过的详细的xx参数的名称和值。-XX:+PrintFlagsInitial打印所有JVM参数启动的初始值-XX:+PrintFlagsFinal打......
  • #yyds干货盘点#工作中常用的git命令
    Git配置了解版本控制什么是版本控制?我真的需要吗?版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统。什么是分布式版本控制系统分布式版本控制系统(......
  • PDF 压缩常用方法比较
    日常工作中,如果是一份PDF文档传输,时间长一点没什么问题,但如果需要传输几十个文档或者几百个就会花费很多时间,而对多个PDF文档压缩,体积变小了,传输的效率会大大提高,节省时......
  • 你说使用过ZooKeeper,那来说说他的基本原理吧
    ZooKeeper是一个开放源码的分布式应用程序协调服务,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。ZooKeeper设计目的最终一致性:client不论连接到哪个Serv......
  • 嵌入式开发中常用的条件编译
    条件编译命令常见形式:1#ifdef标识符2程序段13#else4程序段25#endif作用:当标识符被#define定义过,则对程序段1进行编译,否则编译程序段2。常用形式2:#ifndef......
  • Linux基本命令
     关机  shutdown     poweroff重启  reboot          syncsu  pwd:查看当前工作目录的路径su:用来切换用户身份ls:-a......
  • 前端开发常用工具
    HtmlEmmethtml代码快速生成工具。占位字符生成lorem敲tab键即可自动生成一段占位文本图片占位符生成网址/图片宽度x图片高度支持的网址:http://placeholder......
  • 10 常用容器
    这些容器的泛型中全部只能使用对象,不能使用基本数据类型。10.0CollectionFrameworkjava.util.Collection集合中不能存放基本类型数据,而只能存放对象的引用。Collec......