万书网 > 文学作品 > Android从入门到精通 > 第55页

第55页





@Override



public  void  onClick(DialogInterface  dialog,  int  which)  {



Notification  notify  =  new  Notification();  //创建一个Notification对象



notify.icon  =  imageId[which];



notify.tickerText  =  title[which];



notify.when  =  System.currentTimeMillis();  //设置发送时间



notify.defaults  =  Notification.DEFAULT_SOUND;  //设置默认声音



notify.setLatestEventInfo(MainActivity.this,  user,



title[which],  null);  //设置事件信息



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



//让布局中的第一行不显示



((TableRow)findViewById(R.id.tableRow1)).setVisibility(View.INVISIBLE);



//让布局中的第二行不显示



((TableRow)findViewById(R.id.tableRow2)).setVisibility(View.INVISIBLE);



((Button)findViewById(R.id.button1)).setText("更改登录状态");  //改变“登录”按钮上显示的文字



}



});



builder.create().show();  //创建对话框并显示



}

注意:  当用户选择了登录状态列表项后,在显示通知的同时,还需要将布局中的第一行(用于输入用户名)和第二行(用于输入密码)的内容设置为不显示,并且改变“登录”按钮上显示的文字为“更改登录状态”。

(5)在onCreate()方法中,获取“退出”按钮并为其添加单击事件监听器,在重写的onClick()方法中,清除代表登录状态的通知,然后将布局中的第一行和第二行的内容显示出来,并改变“更改登录状态”按钮上显示的文字为“登录”,具体代码如下:

Button  button2  =  (Button)  findViewById(R.id.button2);  //获取“退出”按钮



//为“退出”按钮添加单击事件监听器



button2.setOnClickListener(new  OnClickListener()  {



@Override



public  void  onClick(View  v)  {



notificationManager.cancel(NOTIFYID_1);  //清除通知



((TableRow)findViewById(R.id.tableRow1)).setVisibility(View.VISIBLE);  //让布局中的第一行显示



((TableRow)findViewById(R.id.tableRow2)).setVisibility(View.VISIBLE);  //让布局中的第二行显示



((Button)findViewById(R.id.button1)).setText("登录");  //改变“更改登录状态”按钮上显示的文字



}



});

运行本实例,将显示一个用户登录界面,输入用户名(bellflower)和密码(111)后,单击“登录”按钮,将弹出如图4.28所示的选择登录状态的列表对话框,单击代表登录状态的列表项,该对话框消失,并在屏幕的右下角显示代表登录状态的通知,过一段时间后该通知消失,同时在状态栏上显示代表登录状态的图标,单击该图标,将显示通知列表,如图4.29所示。单击“退出”按钮,可以删除该通知。



图4.28 选择登录状态的列表对话框



图4.29 在状态栏中显示登录状态





4.4 小 结

本章介绍了用户界面设计中的高级部分,主要分为高级组件和消息提示框与对话框两部分。在高级组件部分,主要介绍了自动完成文本框、进度条、拖动条、星级评分条、选项卡、图像切换器、网格视图和画廊视图等。其中,需要重点掌握的是图像切换器与网格视图和画廊视图的综合应用;在消息提示框与对话框中,主要介绍了如何显示消息提示框、发送并显示通知,以及如何弹出各种对话框。在实际程序开发时,消息提示框和对话框最为常用,需要读者重点掌握,并能做到融会贯通。





4.5 实践与练习

1.  编写Android程序,实现在页面完全载入前,在标题上显示一个圆形进度条,当页面载入后,隐藏该进度条。(答案位置:光盘\TM\sl\4\4.18)

2.  编写Android程序,实现带预览的图片浏览器。(答案位置:光盘\TM\sl\4\4.19)

3.  编写Android程序,应用Alert  Dialog实现自定义的登录对话框。(答案位置:光盘\TM\sl\4\4.20)





第5章 基本程序单元Activity

(  教学录像:2小时4分钟)

在前面介绍的实例中已经应用过Activity,不过那些实例中的所有操作都是在一个Activity中进行的,在实际的应用开发中,经常需要包含多个Activity,而且这些Activity之间可以相互跳转或传递数据。本章将对Activity进行详细介绍。

通过阅读本章,您可以:

★  了解Activity及其生命周期



★  掌握创建、配置、启动和关闭Activity的方法



★  掌握如何使用Bundle在Activity之间交换数据



★  掌握如何调用另一个Activity并返回结果



★  掌握创建Fragment的方法



★  掌握在Activity中添加Fragment的两种方法





5.1 Activity概述

教学录像:光盘\TM\lx\5\  Activity概述.exe

Activity的中文意思是活动。在Android中,Activity代表手机屏幕的一屏,或是平板电脑中的一个窗口。它是Android应用的重要组成单元之一,提供了和用户交互的可视化界面。在一个Activity中,可以添加很多组件,这些组件负责具体的功能。

在Android应用中,可以有多个Activity,这些Activity组成了Activity栈(Stack),当前活动的Activity位于栈顶,之前的Activity被压入下面,成为非活动Activity,等待是否可能被恢复为活动状态。在Activity的生命周期中,有如表5.1所示的4个重要状态。

表5.1 Activity的4个重要状态





状 态  描 述

活动状态  当前的Activity,位于Activity栈顶,用户可见,并且可以获得焦点

暂停状态  失去焦点的Activity,仍然可见,但是在内存低的情况下,不能被系统killed(杀死)

停止状态  该Activity被其他Activity所覆盖,不可见,但是它仍然保存所有的状态和信息。当内存低的情况下,它将要被系统killed(杀死)