Android对话框
来源:互联网 发布:eclipse如何写java 编辑:程序博客网 时间:2024/04/28 02:09
老罗视频学习笔记。
一.普通的警告对话框。设置有标题,提示信息,标题图片,确认取消忽略三个按钮。
//新建一个AlertDialog.Builder类对象AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);//通过builder给对话框进行设置//设置标题builder.setTitle(" ");//设置标题图片builder.setIcon(R.drawable.tip);//设置messagebuilder.setMessage("这是一个AlertDialog对话框");//给对话框设置按钮,注意此处的OnClickListener导入的包为//import android.content.DialogInterface.OnClickListener;builder.setPositiveButton("确定", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int which) {// TODO Auto-generated method stub//在此处完成用户的操作,例如删除数据啊,确认数据啊等//关闭对话框//dialogInterface.dismiss();}});builder.setNegativeButton("取消", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int which) {// TODO Auto-generated method stub//关闭对话框//dialogInterface.dismiss();}});builder.setNeutralButton("忽略", new OnClickListener() {@Overridepublic void onClick(DialogInterface arg0, int arg1) {// TODO Auto-generated method stub}});//创建出来并显示AlertDialog alertDialog = builder.create();alertDialog.show();//也可以按下边这两行这样写//builder.create();//builder.show();}});
效果图如下:可以看到,在对话框弹出后,Activity失去焦点
二.用AlertDialog显示list列表
用setItems方法实现
定义一下数组信息:
private final CharSequence[] items = {"北京","上海","杭州"};
然后定义对话框:
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setTitle("你来自哪里");//使用这个函数时不能同时使用setMessage函数,因为message会把内容覆盖掉builder.setItems(items, new OnClickListener() {//就是通过这个方法实现的@Overridepublic void onClick(DialogInterface dialogInterface, int which) {// TODO Auto-generated method stubCharSequence charSequence = items[which];Toast.makeText(MainActivity.this, "----->"+charSequence, 1).show();}});AlertDialog alertDialog = builder.create();alertDialog.show();}});
效果图如下:
三.用AlertDialog实现单选。
用setSingleChoiceItems方法实现的。
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setTitle("请选择以下城市");//上下基本一样,从这里开始不一样,设置单选项//第二个参数是-1,表示默认没有要选择的,builder.setSingleChoiceItems(items, -1, new OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int which) {// TODO Auto-generated method stubCharSequence charSequence = items[which];Toast.makeText(MainActivity.this, charSequence, Toast.LENGTH_SHORT).show();}});AlertDialog alertDialog = builder.create();alertDialog.show();}});
效果图如下:
四.用AlertDialog显示复选。
通过setMultiChoiceItems方法实现,还有一个确定按钮
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setTitle("请选择以下城市");//第二个参数,就是用来设置初选哪几个,设置为null,表示都没有选中builder.setMultiChoiceItems(items, new boolean[] {false,true,false}, new OnMultiChoiceClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int which, boolean ischecked) {// TODO Auto-generated method stub}});builder.setPositiveButton("确定", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int which) {// TODO Auto-generated method stub}});AlertDialog alertDialog = builder.create();alertDialog.show();
或者在strings.xml文件中加一段
<string-array name="city"> <item>北京</item> <item>上海</item> <item>杭州</item> </string-array>
setMultiChoiceItems函数改为这样,结果一样样的。
builder.setMultiChoiceItems(R.array.city, new boolean[] {false,true,false}, new OnMultiChoiceClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int which, boolean ischecked) {// TODO Auto-generated method stub}});
效果图如下:
五.显示圆形ProgressDialog对话框。
ProgressDialog这个类是继承自AlertDialog对话框类的。
第一种显示方法:很简单,但是对话框出现后,按返回按钮或者别的地方,这个对话框不会消失
//第一种方法,这种方法的话按返回键没有效果,进度对话框没有消失//ProgressDialog.show(MainActivity.this, "提示", "正在加载,请稍后。。。");
第二种显示方法,这种按返回键或者别的地方,对话框会消失的。
//第二种方法,这种方法创建的话,按返回键和别的地方,这个进度对话框会消失ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);progressDialog.setTitle("提示");progressDialog.setMessage("正在加载,请稍后");progressDialog.show();
效果图如下:
六.显示横向进度框
ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);progressDialog.setTitle("条形对话框");progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);progressDialog.setProgress(50);//一般用于下载时//处理过程中不能被中止掉,就是说点击返回键或者别的地方都不会中止的。progressDialog.setCancelable(false);progressDialog.show();
有两个函数需要注意,
setProgressStyle的参数为STYLE_HORIZONTAL时,是横向的对话框,默认为STYLE_SPINNER圆形的。
还有setCancelable函数设置为false时,对话框不会中止。
效果图如下:
七.显示自定义对话框
首先新建一个Custom_dialog.xml布局文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ImageView android:id="@+id/image" android:layout_width="fill_parent" android:layout_height="wrap_content" /><TextView android:id="@+id/textview" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="自定义布局"/></LinearLayout>
再新建一个Custom类加载这个布局文件 ,并显示。
public class Custom {private Context context;private Dialog dialog;public Custom(Context context) {// TODO Auto-generated constructor stubthis.context = context;dialog = new Dialog(context);}public void show() {//第一种方法//dialog.setContentView(R.layout.custom_dialog);//第二种方法View view = LayoutInflater.from(context).inflate(R.layout.custom_dialog, null);dialog.setContentView(view);dialog.setTitle("提示");ImageView imageView = (ImageView)view.findViewById(R.id.image);imageView.setImageResource(R.drawable.bg);dialog.show();}}
在主界面的按钮点击事件中:
把MainActivity上下文的context对象传入即可。
Custom custom = new Custom(MainActivity.this);custom.show();
效果图如下:
八.日期对话框
TimePickerDialog类
首先定义表示日期的变量,年月日:
private int year;private int monthOfYear;private int dayOfMonth;
然后利用类Calender类进行初始化:
//完成对年月日的初始化。Calendar calendar = Calendar.getInstance();year = calendar.get(Calendar.YEAR);monthOfYear = calendar.get(Calendar.MONTH);dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
按钮的点击事件中:
DatePickerDialog datePickerDialog = new DatePickerDialog(MainActivity.this, new OnDateSetListener() {@Overridepublic void onDateSet(DatePicker arg0, int year, int monthOfYear, int dayOfMonth) {// TODO Auto-generated method stub//当用户选中日期的时候会触发monthOfYear++;String string = year + "年-"+monthOfYear +"月-"+dayOfMonth+"日";Toast.makeText(MainActivity.this, string, Toast.LENGTH_SHORT).show();}}, year, monthOfYear, dayOfMonth);datePickerDialog.show();
效果图如下:
九.时间对话框
TimePickerDialog类
首先定义表示时间的变量,小时秒:
private int hourOfDay;private int minute;
然后初始化:
Calendar calendar2 = Calendar.getInstance();hourOfDay = calendar2.get(Calendar.HOUR_OF_DAY);minute = calendar2.get(Calendar.MINUTE);
在按钮的点击事件中如下:
流程其实和日期对话框的一样。
TimePickerDialog timePickerDialog = new TimePickerDialog(MainActivity.this, new OnTimeSetListener() {@Overridepublic void onTimeSet(TimePicker arg0, int hourOfDay, int minute) {// TODO Auto-generated method stubString string = hourOfDay + "小时-"+minute + "秒";Toast.makeText(MainActivity.this, string, 1).show();}}, hourOfDay, minute, true);//最后一个参数为true是24小时制,false是12小时制。timePickerDialog.show();
效果图如下:
0 0
- Android对话框
- Android对话框
- android 对话框
- android 对话框
- Android对话框
- Android对话框
- Android对话框
- Android对话框
- android对话框
- Android对话框
- android对话框
- Android对话框
- Android对话框
- android对话框
- android对话框
- Android对话框
- android 对话框
- android 对话框
- Accept-Encoding: gzip,deflate 以压缩格式接收请求数据
- 知乎越来越无聊了,真是想破了脑袋找可以装逼的地方!
- javascript 中 正则表达式两种表达方式(regexp in javascript two ways expression)
- zoj 3841 Cards(组合数学)
- 基于状态机的串口通信解析
- Android对话框
- 阅读笔记:《浪潮之巅》上册
- 海通PEHUB技术支持
- 数据结构课程设计
- <数据结构> ——迟来的课程设计__04
- 云南旅游最美景点20强最新排名
- 多维标度分析
- 继承
- Java注解教程和自定义注解