Android开发学习日记--对话框

目录

一、效果展示

 二、实现步骤

1.提醒对话框AlertDialog

2.日期对话框DatePickerDialog

3.时间对话框TimePickerDialog


一、效果展示

 二、实现步骤

1.提醒对话框AlertDialog

AlertDialog 名为提醒对话框,它是 Android 中最常用的对话框,可以完成常见的交互操作,例如提示、 确认、选择等功能。由于AlertDialog 没有公开的构造方法,因此必须借助建造器 AlertDialog.Builder才能完成参数设置,AlertDialog.Builder的常用方法说明如下。
  • setIcon:设置对话框的标题图标。
  • setTitle:设置对话框的标题文本。
  • setMessage:设置对话框的内容文本。
  • setPositiveButton:设置肯定按钮的信息,包括按钮文本和点击监听器。
  • setNegativeButton:设置否定按钮的信息,包括按钮文本和点击监听器。
  • setNeutralButton:设置中性按钮的信息,包括按钮文本和点击监听器,该方法比较少用。
    通过 AlertDialog.Builder设置完对话框参数,还需调用建造器的 create 方法才能生成对话框实例。最后 调用对话框实例的show 方法,在页面上弹出提醒对话框。
java代码:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button b=findViewById(R.id.b);
        b.setOnClickListener(this);  //为按钮设置点击监听事件
    }
    @Override
    public void onClick(View v) {
        //创建提醒对话框的创建器
        AlertDialog.Builder builder=new AlertDialog.Builder(this);
        //设置对话框的标题文本
        builder.setTitle("美丽的女士");
        //设置对话框的内容文本
        builder.setMessage("今晚要共进晚餐吗?");
        //设置对话框的肯定按钮文本以及点击事件
        builder.setNegativeButton("残忍拒绝", (dialog, which) -> Toast.makeText(MainActivity.this, "太令人悲伤了呜呜呜~", Toast.LENGTH_SHORT).show());
        //设置对话框的否定按钮文本以及点击事件
        builder.setPositiveButton("准时赴约",(dialog, which) -> Toast.makeText(MainActivity.this,"太感动了呜呜呜~",Toast.LENGTH_SHORT).show());
        // 根据建造器构建提醒对话框对象
        AlertDialog alertDialog=builder.create();
        // 显示提醒对话框
        alertDialog.show();
    }
}

2.日期对话框DatePickerDialog

     虽然 EditText 提供了 inputType="date"的日期输入,但是很少有人会手工输入完整日期,况且EditText 还不支持“年**月**日”这样的中文日期,所以系统提供了专门的日期选择器DatePicker ,供用户选择 具体的年月日。不过,DatePicker 并非弹窗模式,而是在当前页面占据一块区域,并且不会自动关闭。 按习惯来说,日期控件应该弹出对话框,选择完日期就要自动关闭对话框。因此,很少直接在界面上显示DatePicker ,而是利用已经封装好的日期选择对话 DatePickerDialog 。       DatePickerDialog相当于在 AlertDialog 上装载了 DatePicker ,编码时只需调用构造方法设置当前的年、月、日,然后调用show 方法即可弹出日期对话框。日期选择事件则由监听 OnDateSetListener 负责响 应,在该监听器的onDateSet 方法中,开发者获取用户选择的具体日期,再做后续处理。特别注意onDateSet的月份参数,它的起始值不是 1 而是 0 。也就是说,一月份对应的参数值为0 ,十二月份对应的 参数值为11 ,中间月份的数值以此类推。
Java代码:
// 该页面类实现了接口OnDateSetListener,意味着要重写日期监听器的onDateSet方法
public class MainActivity extends AppCompatActivity implements View.OnClickListener, DatePickerDialog.OnDateSetListener {

    private Button b;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        b = findViewById(R.id.b);
        b.setOnClickListener(this);
    }
    @Override
    public void onClick(View v) {
        if(v.getId()==R.id.b)
        {
            Calendar calendar= Calendar.getInstance();
            // 构建一个日期对话框,该对话框已经集成了日期选择器。
            // DatePickerDialog的第二个构造参数指定了日期监听器
            DatePickerDialog datePickerDialog= new DatePickerDialog(this,this,calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH));
            // 显示日期对话框
            datePickerDialog.show();
        }
    }
    @Override  // 一旦点击日期对话框上的确定按钮,就会触发监听器的onDateSet方法
    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
        // 获取日期对话框设定的年月份  其中onDateSet的月份参数,它的起始值不是1而是0
        String desc=String.format("您选择的日期是%d年%d月%d日",year,month+1,dayOfMonth);
        Toast.makeText(this,  desc, Toast.LENGTH_SHORT).show();
    }
}

3.时间对话框TimePickerDialog

    既然有了日期选择器,还得有对应的时间选择器。同样,实际开发中也很少直接用 TimePicker ,而是用 封装好的时间选择对话框TimePickerDialog 。该对话框的用法类似 DatePickerDialog ,不同之处主要有两个:
1 )构造方法传的是当前的小时与分钟,最后一个参数表示是否采取24 小时制,一般为true 表示小时的数值范围为0~23;若为 false 则表示采取 12 小时制。
2 )时间选择监听器为 OnTimeSetListener ,对应需要实现 onTimeSet 方法,在该方法中可获得用户选择的小时和分钟。
     
        从布局文件中设置TimePicker时候固定在页面上的,如果想以对话框的形式出现,还是需要Java代码。TimePicker有两种模式,spinner和clock。
XML代码:
<Button
        android:id="@+id/b"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="我们什么时候结婚?"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#000000"
        android:text="spinner样式的TimePicker"/>
    <TimePicker
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:timePickerMode="spinner"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#000000"
        android:text="clock样式的TimePicker"/>
    <TimePicker
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:timePickerMode="clock"/>
Java代码:
public class MainActivity extends AppCompatActivity implements View.OnClickListener, TimePickerDialog.OnTimeSetListener {

    private Button b;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        b = findViewById(R.id.b);
        b.setOnClickListener(this);
    }
    @Override
    public void onClick(View v) {
        if(v.getId()==R.id.b)
        {
            Calendar calendar=Calendar.getInstance();
            // 构建一个时间对话框,该对话框已经集成了时间选择器。
            // true表示24小时制,false表示12小时制
            TimePickerDialog t=new TimePickerDialog(this,this,calendar.get(Calendar.HOUR_OF_DAY),calendar.get(Calendar.MINUTE),true);
            t.show();
        }
    }
    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        String desc=String.format("你选择的时间是%d点%d分",hourOfDay,minute);
        Toast.makeText(this, desc, Toast.LENGTH_SHORT).show();
    }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值