消息提示框与对话框

使用Toast显示消息提示框

Toast类用于在屏幕中显示一个消息提示框,该消息提示框没有任何控制按钮,并且不会获得焦点,经 过一定时间后自动消失。

(1)创建一个Toast对象。通常有两种方法:一种是使用构造方式进行创建;另一种是调用Toast类的makeText()方法创建。

使用构造方法创建一个名称为toast的Toast对象的基本代码如下:

Toast toast=new Toast(this); 

(2)调用Toast类的makeText()方法创建一个名称为toast的Toast对象的基本代码如下:

Toast toast=Toast.makeText(this, "要显示的内容", Toast.LENGTH_SHORT);
方法 								描述 
setDuration(int duration) 用于设置消息提示框持续的时间,参数值通常使用Toast.LENGTH_LONG或Toast.LENGTH_SHORT 
setGravity(int gravity, int xOffset, int yOffset) 用于设置消息提示框的位置,参数gravity用于指定对齐方式;xOffset和yOffset用于指定具体的偏移值 
setMargin(float horizontalMargin, float verticalMargin) 用于设置消息提示的页边距 
setText(CharSequences) 用于设置要显示的文本内容 
setView(Viewview) 用于设置将要在消息提示框中显示的视图

(3)调用Toast类的show()方法显示消息提示框。需要注意的是,一定要调用该方法,否则设置的消息提示框将不显示。

下面通过一个具体的实例说明如何使用Toast类显示消息提示框。

通过两种方法显示消息提示框。

(1)修改新建项目的res\layout目录下的布局文件main.xml,
为默认添加的垂直线性布局管理器设置一个android:id属性,关键代码如下:

android:id="@+id/ll"

(2)在主活动MainActivity.java的onCreate()方法中,通过makeText()方法显示一个消息提示框,关键代码如下:

Toast.makeText(this, "我是通过makeText()方法创建的消息提示框", Toast.LENGTH_LONG).show(); 

注意:在最后一定不要忘记调用show()方法,否则该消息提示框将不显示。

(3)通过Toast类的构造方法创建一个消息提示框,并设置其持续时间、对齐方式以及要显示的内容等,这里设置其显示内容为带图标的消息,具体代码如下:

Toast toast=new Toast(this); toast.setDuration(Toast.LENGTH_SHORT); //设置持续时间 
toast.setGravity(Gravity.CENTER, 0, 0); //设置对齐方式 
LinearLayout ll=new LinearLayout(this); //创建一个线性布局管理器 
ImageView iv=new ImageView(this); //创建一个
ImageView iv.setImageResource(R.drawable.alerm); //设置要显示的图片 
iv.setPadding(0, 0, 5, 0); //设置ImageView的内边距 
ll.addView(iv); //将ImageView添加到线性布局管理器中 
TextView tv=new TextView(this); //创建一个TextView 
tv.setText("我是通过构造方法创建的消息提示框"); //为TextView设置文本内容 
ll.addView(tv); //将TextView添加到线性布局管理器中 
toast.setView(ll); //设置消息提示框中要显示的视图 
toast.show(); //显示消息提示框

使用Notification在状态栏上显示通知(未实现)

在使用手机时,当有未接来电或是新短消息时,手机会给出相应的提示信息,这些提示信息通常会显示到手机屏幕的状态栏上。Android也提供了用于处理这些信息的类,它们是Notification和 NotificationManager。其中,Notification代表的是具有全局效果的通知;而NotificationManager则是用于发送Notification通知的系统服务。

使用Notification和NotificationManager类发送和显示通知也比较简单,大致可以分为以下4个步骤。 (1)调用getSystemService()方法获取系统的NotificationManager服务。
(2)创建一个Notification对象,并为其设置各种属性。
(3)为Notification对象设置事件信息。
(4)通过NotificationManager类的notify()方法发送Notification通知

实现在状态栏上显示通知和删除通知。

(1)修改新建项目的res\layout目录下的布局文件main27.xml,将默认添加的TextView组件删除,然后添加两个普通按钮,一个用于显示通知,另一个用于删除通知。由于此处的布局代码比较简单,这里就不再 给出。
(2)在主活动MainActivity.java的onCreate()方法中,调用getSystemService()方法获取系统的NotificationManager服务,关键代码如下:

//获取通知管理器,用于发送通知

final NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

(3)获取“显示通知”按钮,并为其添加单击事件监听器,在重写的onClick()方法中,首先通过无参的构造方法创建一个Notification对象,并设置其相关属性,然后通过通知管理器发送该通知,接下来通过构 造方法Notification(int icon, CharSequencetickerText, longwhen)创建一个通知,并为其设置事件信息,最后通过通知管理器发送该通知,具体代码如下:

//为“显示通知”按钮添加单击事件监听器
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Notification notify = new Notification(); //创建一个Notification对象
                notify.icon = R.drawable.img01;
                notify.tickerText = "显示第一个通知";
                notify.when = System.currentTimeMillis(); //设置发送时间
                notify.defaults = Notification.DEFAULT_ALL; //设置默认声音、默认振动和默认闪光灯
                //设置默认声音、默认振动和默认闪光灯
                notify.setLatestEventInfo(MainActivity3.this, "无题", "每天进步一点点", null); //设置事件信息(此方法不存在)
                notificationManager.notify(1, notify); //通过通知管理器发送通知

                //添加第二个通知
                Notification notify1 = new Notification(R.drawable.img02, "显示第二个通知", System.currentTimeMillis());
                notify1.flags|=Notification.FLAG_AUTO_CANCEL; //打开应用程序后图标消失
                Intent intent=new Intent(MainActivity3.this,ContentActivity.class);
                PendingIntent pendingIntent=PendingIntent.getActivity(MainActivity3.this, 0, intent, 0);
                notify1.setLatestEventInfo(this, "通知", "查看详细内容", pendingIntent); //设置事件信息

                notificationManager.notify(2, notify1); //通过通知管理器发送通知
            }
        });

        Button button2 = (Button) findViewById(R.id.button2); //获取“删除通知”按钮
        //为“删除通知”按钮添加单击事件监听器
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                notificationManager.cancel(1); //清除ID号为常量NOTIFYID_1的通知
                notificationManager.cancelAll(); //清除全部通知
            }
        });

使用AlertDialog创建对话框

AlertDialog类的功能非常强大,它不仅可以生成带按钮的提示对话框,还可以生成带列表的列表对话框,概括起来有以下4种:

[√]带确定、中立和取消等N个按钮的提示对话框,其中的按钮个数不是固定的,可以根据需要添加。例如,不需要中立按钮,则可以生成只带有确定和取消按钮的对话框,也可以是只带有一个按钮的对 话框。 
[√]带列表的列表对话框。 
[√]带多个单选列表项和N个按钮的列表对话框。 
[√]带多个多选列表项和N个按钮的列表对话框

方 法 									描述 
setTitle(CharSequencetitle) 用于为对话框设置标题 
setIcon(Drawableicon) 用于通过Drawable资源对象为对话框设置图标 
setIcon(int resId) 用于通过资源ID为对话框设置图标 
setMessage(CharSequence message) 用于为提示对话框设置要显示的内容 
setButton() 用于为提示对话框添加按钮,可以是取消按钮、中立按钮和确定按钮。需要通过为其指定int类型的whichButton参数实现, 其参数值可以是DialogInterface. BUTTON_POSITIVE(确定按钮)、BUTTON_NEGATIVE(取消按钮)或者 BUTTON_NEUTRAL(中立按钮)

通常情况下,使用AlertDialog类只能生成带N个按钮的提示对话框,要生成另外3种列表对话框,需要使用AlertDialog.Builder类
setTitle(CharSequencetitle) 用于为对话框设置标题 
setIcon(Drawableicon) 用于通过Drawable资源对象为对话框设置图标 
setIcon(int resId) 用于通过资源ID为对话框设置图标 
setMessage(CharSequence message) 用于为提示对话框设置要显示的内容 
setNegativeButton() 用于为对话框添加取消按钮 
setPositiveButton() 用于为对话框添加确定按钮 
setNeutralButton() 用于为对话框添加中立按钮 
setItems() 用于为对话框添加列表项 
setSingleChoiceItems() 用于为对话框添加单选列表项 
setMultiChoiceItems() 用于为对话框添加多选列表项

下面通过一个具体的实例说明如何应用AlertDialog类生成提示对话框和各种列表对话框。

应用AlertDialog类实现带取消、中立和确定按钮的提示对话框,以及带列表、带多个单选列表项和带多个多选列表项的列表对话框。

(1)新建项目的res\layout目录下的布局文件main29.xml,添加4个用于控制各种对话框显示的按钮。由于此处的布局代码比较简单,这里就不再给出。 
(2)在主活动MainActivity.java的onCreate()方法中,获取布局文件中添加的第1个按钮,也就是“显示带取消、中立和确定按钮的对话框”按钮,并为其添加单击事件监听器,在重写的onClick()方法中,应用 AlertDialog类创建一个带取消、中立和确定按钮的提示对话框,具体代码如下:
Button button1 = (Button) findViewById(R.id.button1); //获取“显示带取消、中立和确定按钮的对话框”按钮 //为“显示带取消、中立和确定按钮的对话框”按钮添加单击事件监听器 
	button1.setOnClickListener(new View.OnClickListener() { 
		@Override 
		public void onClick(View v) { 
			AlertDialog alert = new AlertDialog.Builder(MainActivity.this).create(); 
			alert.setIcon(R.drawable.advise); //设置对话框的图标
			alert.setTitle("系统提示:"); //设置对话框的标题 
			alert.setMessage("带取消、中立和确定按钮的对话框!"); //设置要显示的内容 
			//添加“取消”按钮 
			alert.setButton(DialogInterface.BUTTON_NEGATIVE,"取消", new OnClickListener() { 
				@Override 
				public void onClick(DialogInterface dialog, int which) { 
					Toast.makeText(MainActivity.this, "您单击了取消按钮",Toast.LENGTH_SHORT).show(); 
				} 
			}); 
			//添加“确定”按钮 
			alert.setButton(DialogInterface.BUTTON_POSITIVE,"确定", new OnClickListener() { 
				@Override 
				public void onClick(DialogInterface dialog, int which) { 
					Toast.makeText(MainActivity.this, "您单击了确定按钮",Toast.LENGTH_SHORT).show(); 
				} 
			}); 
			alert.setButton(DialogInterface.BUTTON_NEUTRAL,"中立",new OnClickListener(){ 
				@Override 
				public void onClick(DialogInterface dialog, int which) {
				} 
			}); //添加“中立”按钮 
			alert.show(); //显示对话框 
		} 
	});

在这里插入图片描述
(3)在主活动MainActivity.java的onCreate()方法中,获取布局文件中添加的第2个按钮,也就是“显示带列表的对话框”按钮,并为其添加单击事件监听器,在重写的onClick()方法中,应用AlertDialog类创建一 个带5个列表项的列表对话框,具体代码如下:

Button button2 = (Button) findViewById(R.id.button2); //获取“显示带列表的对话框”按钮 
	button2.setOnClickListener(new View.OnClickListener() { 
		@Override 
		public void onClick(View v) { 
			final String[] items = new String[] { "跑步", "羽毛球", "乒乓球", "网球", "体操" }; 
			Builder builder = new AlertDialog.Builder(MainActivity.this); 
			builder.setIcon(R.drawable.advise1); //设置对话框的图标 
			builder.setTitle("请选择你喜欢的运动项目:"); //设置对话框的标题 
			//添加列表项 
			builder.setItems(items, new OnClickListener() { 
				@Override 
				public void onClick(DialogInterface dialog, int which) { 
					Toast.makeText(MainActivity.this, "您选择了" + items[which], Toast.LENGTH_SHORT).show(); 
				} 
			}); 
			builder.create().show(); //创建对话框并显示 
		} 
	});
注意:一定不要忘记builder.create().show();,否则将不能显示生成的对话框。

在这里插入图片描述

(4)在主活动MainActivity.java的onCreate()方法中,获取布局文件中添加的第3个按钮,也就是“显示带单选列表项的对话框”按钮,并为其添加单击事件监听器,在重写的onClick()方法中,应用AlertDialog类 创建一个带5个单选列表项和一个“确定”按钮的列表对话框,具体代码如下:
Button button3 = (Button) findViewById(R.id.button3); //获取“显示带单选列表项的对话框”按钮 
button3.setOnClickListener(new View.OnClickListener() { 
	@Override 
	public void onClick(View v) { 
		final String[] items = new String[] { "标准", "无声", "会议", "户外","离线" }; //显示带单选列表项的对话框 
		Builder builder = new AlertDialog.Builder(MainActivity.this); 
		builder.setIcon(R.drawable.advise2); //设置对话框的图标 
		builder.setTitle("请选择要使用的情景模式:"); //设置对话框的标题 
		builder.setSingleChoiceItems(items, 0, new OnClickListener() { 
			@Override 
			public void onClick(DialogInterface dialog, int which) { 
				Toast.makeText(MainActivity.this, "您选择了" + items[which], Toast.LENGTH_SHORT).show(); //显示选择结果 
			} 
		}); 
		builder.setPositiveButton("确定", null); //添加“确定”按钮 
		builder.create().show(); //创建对话框并显示 
	} 
});

在这里插入图片描述
(5)在主活动中定义一个boolean类型的数组(用于记录各列表项的状态)和一个String类型的数组(用于记录各列表项要显示的内容),关键代码如下

private boolean[] checkedItems; //记录各列表项的状态 
private String[] items; //各列表项要显示的内容

(6)在主活动MainActivity的onCreate()方法中,获取布局文件中添加的第4个按钮,也就是“显示带多选列表项的对话框”按钮,并为其添加单击事件监听器,在重写的onClick()方法中,应用AlertDialog类创建 一个带5个多选列表项和一个“确定”按钮的列表对话框,具体代码如下:

Button button4 = (Button) findViewById(R.id.button4); //获取“显示带多选列表项的对话框”按钮 
button4.setOnClickListener(new View.OnClickListener() { 
	@Override 
	public void onClick(View v) { 
		checkedItems= new boolean[] { false, true, false,true, false }; //记录各列表项的状态 
		//各列表项要显示的内容 
		items = new String[] { "植物大战僵尸", "愤怒的小鸟", "泡泡龙", "开心农场", "超级玛丽" }; 
		//显示带单选列表项的对话框 
		Builder builder = new AlertDialog.Builder(MainActivity.this); 
		builder.setIcon(R.drawable.advise2); //设置对话框的图标 
		builder.setTitle("请选择您喜爱的游戏:"); //设置对话框的标题 
		builder.setMultiChoiceItems(items, checkedItems, new OnMultiChoiceClickListener() { 
			@Override 
			public void onClick(DialogInterface dialog, int which, boolean isChecked) { 
				checkedItems[which]=isChecked; //改变被操作列表项的状态 
			} 
		}); 
		//为对话框添加“确定”按钮 
		builder.setPositiveButton("确定", new OnClickListener() { 
			@Override 
			public void onClick(DialogInterface dialog, int which) {
				String result=""; //用于保存选择结果 
				for(int i=0;i<checkedItems.length;i++){ 
					if(checkedItems[i]){ 
						//当选项被选择时 
						result+=items[i]+"、"; //将选项的内容添加到result中 
					} 
				}
				//当result不为空时,通过消息提示框显示选择的结果 
				if(!"".equals(result)){ 
					result=result.substring(0, result.length()-1); //去掉最后面的“、”号 
					Toast.makeText(MainActivity.this, "您选择了[ "+result+" ]", Toast.LENGTH_LONG).show(); 
				} 
			} 
		}); 
		builder.create().show(); //创建对话框并显示 } });

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值