第25讲 UI组件之AlertDialog 的各种实现

对话框(Dialog)是程序运行中的弹出窗口,例如当用户要删除一个联系方式时,会弹出一个对话框。

Android提供了多种对话框:警告对话框(AlertDialog),进度对话框(ProcessDialog),日期选择对话框(DatePickerDialog),时间选择对话框(TimePickerDialog)。

1.警告对话框AlertDialog

1). AlertDialog的结构:

AlertDialog是一个提示窗口,要求用户做出选择。该对话框中一般会有几个选择按钮、标题信息和提示信息。

a. title 标题是可选部分,如果正文中已经表达清楚信息,可以不设标题。

b. content area 提示内容部分,

c. adition buttons 可以添加操作按钮。

提示:不应该有超过三个操作按钮在对话框。

2).如何创建一个AlertDialog对象:

3). 代码实现

1、简单的对话框



public void test1(Viewview) {

//如何创建一个AlertDialog

//1. AlertDialog.Builder建立一个builder对象,由该类来创建对话框。

AlertDialog.Builderbuilder=new Builder(this);

//2.通过Builder对象设置对话框的标题、内容、按钮以及按钮将要响应的事件。

builder.setTitle("提示信息");

builder.setMessage("我的第一个对话框");

builder.setPositiveButton("确定", newOnClickListener() {            // 设置确定按钮

public void onClick(DialogInterface dialog, int
which) {

Toast.makeText(MainActivity.this,"确定", 0).show();

}

});

builder.setNegativeButton("取消", newOnClickListener() {                   //设置取消按钮

public void onClick(DialogInterface dialog, int
which) {

Toast.makeText(MainActivity.this,"取消", 0).show();

}

});

//3. 调用Builder的create()方法可以创建对话框dialog

AlertDialogalertDialog=builder.create();

//4. 调用AlertDialog的show()方法显示对话框。

alertDialog.show();

}

2、弹出列表

可以对其中的message进行设置

private String[] ss = new String[]{"北京","云南","香港"};

public void test2(Viewview) {

AlertDialog.Builderbuilder=new Builder(this);

builder.setTitle("提示信息");

builder.setItems(ss, new OnClickListener() {

public void onClick(DialogInterfacedialog, int
which) {

Toast.makeText(MainActivity.this,ss[which], 0).show();

}

});

AlertDialogalertDialog=builder.create();

alertDialog.show();

}

3、弹出单选列表

public void test3(Viewview) {

AlertDialog.Builderbuilder=new Builder(this);

builder.setTitle("提示信息");

builder.setSingleChoiceItems(ss, 0, new
OnClickListener(){

public void onClick(DialogInterfacedialog, int
which) {

Toast.makeText(MainActivity.this,ss[which], 0).show();

}

});

AlertDialogalertDialog=builder.create();

alertDialog.show();

}

4、弹出多选框

public void test4(Viewview) {

AlertDialog.Builderbuilder=new Builder(this);

builder.setTitle("提示信息");

builder.setMultiChoiceItems(ss, null,
new OnMultiChoiceClickListener(){

public void onClick(DialogInterface dialog, int
which, boolean isChecked){

Toast.makeText(MainActivity.this,ss[which], 0).show();

}

});

AlertDialogalertDialog=builder.create();

alertDialog.show();

}

其中,null处为默认选择了哪些项,null代表默认什么都没有选。可以改为

new boolean[]{true,true,
false
}代表第1、2项为默认选中项。

2. ProgressDialog:进度对话框

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

1.直接调用ProgressDialog提供的静态方法show()显示即可

2.创建ProgressDialog,再设置对话框的参数,最后show()出来即可

1.调用静态方法显示的环形进度条:show()方法的参数依次为:当前的Activity.this;标题;提示内容;是否显示进度;是否可以按"回退"键关闭

2.另一种的流程是:

①new ProgressDialog(当前Activity.this);   ②设置标题:setTitle()

③设置内容:setMessage()                                 ④设置是否可通过回退按钮关闭:setCancelable()

⑤设置进度条是否显示进度,设置为true的话就会变成第p3中不会动的进度条,setIndeterminate()

⑥设置进度条的类型:两种STYLE_HORIZONTAL水平进度条     STYLE_SPINNER圆形进度条

⑦设置进度条的进度值:setProgress()

3. DatePickerDialog日期选择对话框和TimePickerDialog时间选择对话框

这里的话先要说明一点啊: 这个Date/TimePickerDialog只是供用户来选择日期时间,对于android系统的系统时间,日期没有任何影响,google暂时没有公布系统日期时间设置的API,

构造方法:

DatePickerDialog(当前视图.this; DatePickerDialog.OnDateSetListener()监听器;年;月;日)

TimePickerDialog(当前视图.this; TimePickerDialog.OnTimeSetListener()监听器;小时,分钟,是否采用24小时制)

private Button btndate;

private Button btntime;

private String result = "";

btndate = (Button) findViewById(R.id.btndate);

btntime = (Button) findViewById(R.id.btntime);

btndate.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

//这句话是获得当前的系统时间

Calendar cale = Calendar.getInstance();

/*这里的话因为比较麻烦,所有就直接new一个DatePickerDialog对象,构造方法中的参数依次为:

上下文,OnDateSetListener的监听器,整形的年,月,日

*/

new DatePickerDialog(MainActivity.this,new DatePickerDialog.OnDateSetListener() {

public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {

result += "你选择的是"+year+"年"+monthOfYear+"月"+dayOfMonth+"日";

Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show();

}

}

,cale.get(Calendar.YEAR)

,cale.get(Calendar.MONTH)

,cale.get(Calendar.DAY_OF_MONTH)).show();

}

});

btntime.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

Calendar cale = Calendar.getInstance();

new TimePickerDialog(MainActivity.thisnew TimePickerDialog.OnTimeSetListener() {

public void onTimeSet(TimePicker view, int hourOfDay, int minute) {

result = "";

result += "您选择的时间是:"+hourOfDay+"时"+minute+"分";

Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show();

}

}, cale.get(Calendar.HOUR_OF_DAY), cale.get(Calendar.MINUTE), true).show();

}

});

第25讲 UI组件之 AlertDialog 的各种实现的更多相关文章

  1. 第34讲 UI组件之 ProgressDialog和Message

    第34讲UI组件之 ProgressDialog和Message 1.进度对话框 ProgressDialog <1>简介 ProgressDialog是AlertDialog类的一个扩展 ...

  2. 第28讲 UI组件之 ListView和ArrayAdapter

    第28讲 UI组件之 ListView和ArrayAdapter 1. Adapter 适配器 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的 ...

  3. 第33讲 UI组件_进度条ProcessBar和消息队列处理器handler

    第33讲UI组件_进度条ProcessBar和消息队列处理器handler 1. 进度条ProcessBar 一个可视化的进度指示器,代表正在执行的耗时任务.可以为用户展示一个进度条,表示正在执行的任 ...

  4. 第32讲 UI组件之 时间日期控件DatePicker和TimePicker

    第32讲 UI组件之 时间日期控件DatePicker和TimePicker 在Android中,时间日期控件相对来说还是比较丰富的.其中, DatePicker用来实现日期输入设置,    Time ...

  5. 第31讲 UI组件之 Gallery画廊控件

    第31讲 UI组件之 Gallery画廊控件 1.Gallery的简介 Gallery(画廊)是一个锁定中心条目并且拥有水平滚动列表的视图,一般用来浏览图片,并且可以响应事件显示信息.Gallery只 ...

  6. 第30讲 UI组件之 GridView组件

    第30讲 UI组件之 GridView组件 1.网格布局组件GridView GridView是一个ViewGroup(布局控件),可使用表格的方式显示组件,可滚动的控件.一般用于显示多张图片,比如实 ...

  7. 第29讲 UI组件之 ListView与 BaseAdapter,SimpleAdapter

    第29讲 UI组件之 ListView与 BaseAdapter,SimpleAdapter 1.BaseAdapter BaseAdapter是Android应用程序中经常用到的基础数据适配器,它的 ...

  8. 第27讲 UI组件之 ScrollView与底部动态添加数据

    第27讲 UI组件之 ScrollView与底部动态添加数据 1. ScrollView(滚动视图) ScrollView(滚动视图)是实现滚动的一个控件,只需要将需要滚动的控件添加到ScrollVi ...

  9. 第19讲- UI组件之_Button、checkbox、radio

    第19讲 UI组件之_Button.checkbox.radio 四.按钮Button Button继承自TextView,间接继承自View.当用户对按钮进行操作的时候,触发相应事件,如点击,触摸. ...

随机推荐

  1. SpringMVC文件上传与下载

    一.关键步骤 ①引入核心JAR文件 SpringMVC实现文件上传,需要再添加两个jar包.一个是文件上传的jar包,一个是其所依赖的IO包.这两个jar包,均在Spring支持库的org.apach ...

  2. Highcharts 时间序列,可缩放的图表

    配置 图表 配置可缩放图表. chart.zoomType 指定了用户可以拖放的尺寸,用户可以通过拖动鼠标来放大,可能值是x,y或xy: var chart = { zoomType: 'x' }; ...

  3. NetAnalyzer笔记 之 十 通过邮件方式打造自己的bug反馈模块(C#)

    在软件发布后,有个好的反馈系统,对我们后续的软件开发有着至关重要的影响,现今软件异常反馈功能模块已经成了软件中重要的组成部分了.但是对于个人软件开发者,尤其是对于我这种贫民个人软件开发者却是个不小的难 ...

  4. IOS-UITableView开发常用各种方法总结

    实现列表有两种方式 方式一 继承UIViewController,实现UITableViewDataSource和UITableViewDelegate协议.声明UITableView. UserIn ...

  5. C语言--对数组地址的解析

    在C编程中,我们进程会用到数组,这看起来很简单,因为,数组就是存储相同类型元素的集合嘛,不过,当你还没考虑到数组的地址问题时,一切都是简单的,如果你接触了数组中的地址概念,也许你会改变你的想法. 下面 ...

  6. DOS环境下MySQL使用及不同字符集之间的转换

    mysql -uroot -p; show databses; 创建数据库\c; create database webclass; use webclass; 创建表并设置好各字段的属性\c cre ...

  7. 网页CSS

    CSS 样式表,(分三类:内联.内嵌.外部) 1,内联, 直接作于于 元素 例:   <p style="font-size:14px;"> 2,内嵌 作用于网页 首先 ...

  8. OpenSuse如何共享目录

    如何在SUSE Linux 建立共享文件夹 1./etc/samba/smb.conf 打开配置文档 2.在文档的最后加上共享的文档夹/opt,下面是示例. nte143:/etc/samba # v ...

  9. 统计"面"要素中"点"要素的个数.

    步骤 1,创建字段 IFields /// <summary> /// 创建:"面"-"点数"的字段. /// </summary> / ...

  10. static在类中的定义,和enum的用法

    class A { // static int a = 1;//错误,静态变量在类外定义 static int a; static const int b = 1;//如果是静态成员常量,则可以在类内 ...