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
原创粉丝点击