第5章 使用系统组件_第1页
第5章 使用系统组件_第2页
第5章 使用系统组件_第3页
第5章 使用系统组件_第4页
第5章 使用系统组件_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章使用系统组件Android移动应用程序开发教程第5章使用系统组件Menu(菜单)1Dialog(对话框)2通知3ActionBar4Fragment55.1MenuAndroid平台下有三类菜单:选项菜单(OptionMenu)上下文菜单(ContentMenu)子菜单(Submenu)在Android中通过回调方法创建菜单并处理菜单按下的事件。5.1Menu选项菜单(OptionMenu)选项菜单服务于Activity。当按下手机的Menu键,在屏幕底端弹出选项菜单。选项菜单最多显示6个,当菜单选项多于6个时将只显示前5个菜单,最后的菜单项为一个扩展菜单选项。单击扩展菜单选项,将弹出其余的菜单项。扩展菜单项不能显示图标。5.1Menu选项菜单(OptionMenu)选项菜单OptionMenu定义在android.view.Menu包中。一个选项菜单是一个Menu对象,在Menu对象中可以添加菜单项MenuItem。选项菜单的功能需要开发人员编程来实现。开发选项菜单主要用到的类:Menu、MenuItem、SubMenu。选项菜单常用的回调方法:方法名称说明onCreateOptionsMenu()初始化选项菜单,只在首次显示菜单时调用。onOptionsItemSelected()当某菜单项被选中时调用,默认返回false。onOptionsMenuClosed()当选项菜单关闭、或按下返回键、或选择了某菜单项时调用。onPrepareOptionsMenu()为程序准备选项菜单,每次选项菜单显示前调用。5.1MenuMenu类Menu类对象是一个菜单,它包含一个或多个菜单项MenuItem,也可以包含子菜单SubMenu。Menu的常用方法:方法名称说明add()向Menu添加一个菜单项,返回MenuItem对象。addSubMenu()向Menu添加一个子菜单,返回SubMenu对象。finditem()返回指定id的MenuItem对象。size()返回Menu中菜单项的个数。5.1Menu菜单项MenuItem常用的成员方法:方法名称说明setAlphabeticShortcut()设置MenuItem的字母快捷键。setNumericShortcut()设置MenuItem的数字快捷键。setIcon()设置MenuItem的图标。setIntent()为MenuItem绑定Intent对象,当被选中时调用startActivity方法处理动作相应的Intent。setOnMenuItemClickListener()为MenuItem设置自定义监听器。一般情况下,使用回调方法onOptionsItemSelected效率更高。5.1Menu设计一个选项菜单时要为用户提供交互接口,以响应菜单项被单击的事件。创建选项菜单需要如下步骤:第一步,重写Activity的onCreateOptionsMenu(Menumenu)方法,当我们第一次打开菜单时该方法被自动调用。第二步,调用Menu的add()方法添加菜单项MenuItem,此时,可以调用MenuItem的setIcon()方法来为菜单项设置图标。第三步,定义菜单项被选择之后的回调事件。有两种方法:其一,重写Activity的onOptionsItemSelected()方法,当菜单项MenuItem被选择时,该方法用于响应事件;其二,为每个菜单项MenuItem对象添加OnMenuItemClickListener监听器,在其中定义处理菜单选项中的事件。5.1Menu实例:Android选项菜单设置选项菜单,其中有两个菜单项:“开始”和“返回”。当接收用户在菜单中的选项后,在屏幕的文本框控件中显示选择的内容。项目名:Activity_OptionMenu5.1Menu子菜单(SubMenu)子菜单就是将相同功能的菜单项分组进行多级显示的一种菜单。SubMenu类位于android.view包下,它继承自Menu。每个SubMenu对象代表一个子菜单。SubMenu通常与选项菜单联合使用,往菜单中添加子菜单使用addSubMenu()方法。子菜单SubMenu常用的成员方法:方法名称说明setHeaderIcon(icon/id)使用Drawable对象或id资源设置SubMenu的标题图标。setIcon(icon/id)使用Drawable对象或id资源设置在父菜单中显示的图标。setHeaderTitle(title/id)使用标题文本对象或id资源设置SubMenu的标题。setHeaderView(View)设置指定View对象作为子菜单的图标。5.1Menu实例:选项菜单与子菜单。设置选项菜单,其中有两个菜单分别是:性别子菜单,爱好子菜单。当接收用户选择了子菜单中的菜单项时,在屏幕的文本编辑框控件中累计记录所做的选择的内容。项目名:Activity_Menu5.1Menu实例:选项菜单与子菜单(项目:Activity_Menu)Java代码:MenuActivity.java-1第六章菜单与对话框5.1Menu实例:选项菜单与子菜单(项目:Activity_Menu)Java代码:MenuActivity.java-2……子菜单所在的组的id子菜单标题显示的文本内容子菜单的顺序子菜单的id菜单项所在组的id菜单项id菜单项的顺序菜单项显示的文本内容5.1Menu上下文菜单(ContentMenu)ContentMenu位于android.view包下,继承自Menu。ContentMenu注册于某个View对象上,当长按下该View对象时,呼出上下文菜单。ContentMenu菜单项不支持快捷键,不附带图标。ContentMenu标题可以指定图标。常用方法方法名称说明onCreateContextMenu()每次为View对象呼出上下文菜单时都调用。onContextItemSelected()当用户选择了上下文菜单选项后调用。onContextMenuClosed()当上下文菜单被关闭时调用。registerForContextMenu()为指定的View对象注册一个上下文菜单。5.1Menu在程序中创建上下文菜单的步骤:第一步,重写Activity的onCreateContextMenu()方法,调用Menu的add()方法添加菜单项MenuItem。第二步,重写Activity的onContextItemSelected()方法,响应菜单单击事件。第三步,调用registerForContextMenu()方法,为视图View对象注册上下文菜单。5.1MenuAndroid对话框是用户交互的主要应用之一。对话框是一个显示在当前活动界面前端的小窗口。对话框出现时,当前活动失去焦点,一切和用户的交互通过对话框进行。对话框通常用于提示消息和应用的短活动。5.2DialogAndroid系统主要提供四类对话框:提示对话框(AlertDialog)普通对话框列表对话框单选按钮对话框复选框对话框。进度对话框(ProgressDialog):继承自AlertDialog。日期选择对话框(DatePickerDialog)时间选择对话框(TimePickerDialog)Android对话框都类位于android.app包下。5.2Dialog在Android中通过回调方法创建并处理对话框的事件。相关方法:方法名称说明onCreateDialog()创建对话框,只在首次显示对话框时调用。onPrepareDialog()每次显示对话框前调用。showDialog()以传入参数为id,显示指定的对话框。removeDialog()以传入参数为id,彻底释放指定的对话框。5.2Dialog关闭对话框关闭对话框方法:对Activity调用dismissDialog()方法。对该对话框调用dismiss()方法。注:使用Dialog类的dismiss方法关闭对话框时,对话框并没彻底消失,而是在后台保留其状态。要彻底清除对话框,需要调用removeDialog()方法。5.2Dialog实例:Android对话框在一个Activity里,通过一组按钮,分别打开几种常见的对话框。项目名:Activity_Dialog所有按钮、对话框中显示的文字全部来自strings.xml和array.xml资源文件。5.2Dialog5.2Dialog自定义布局对话框

自定义对话框的布局需要先定义布局文件,然后使用LayoutInflater将布局文件转换为视图View,最后使用Dialog的setView方法将视图设为对话框的内容5.2Dialog publicvoidcreateLoginDialog(){ AlertDialog.Builderbuilder=newAlertDialog.Builder(this); builder.setTitle("用户登录"); builder.setIcon(android.R.drawable.ic_menu_myplaces); LayoutInflaterinflater=LayoutInflater.from(this); ViewloginView=inflater.inflate(R.layout.logindialoglayout,null); finalEditTextname; finalEditTextpwd; name=(EditText)loginView.findViewById(R.id.login_name); pwd=(EditText)loginView.findViewById(R.id.login_password); builder.setView(loginView); builder.setPositiveButton("登录",newDialogInterface.OnClickListener(){ @Override publicvoidonClick(DialogInterfacedialog,intwhich){ Stringn=name.getText().toString(); Stringp=pwd.getText().toString(); Toast.makeText(DialogListActivity.this,"登录信息:"+n+""+p,Toast.LENGTH_LONG).show(); }} ); builder.setNegativeButton("取消",newDialogInterface.OnClickListener(){ @Override publicvoidonClick(DialogInterfacedialog,intwhich){ } }); builder.show();

}5.2DialogDialog样式的Menu5.3通知使用对话框可以实现向用户通知信息的目的,但对话框会打断当前操作,让用户转到对话框界面。如果需要的只是提醒,或通知用户某项工作已经开始,Android还提供了另外两种向用户通知的方式:ToastNotificationAndroid系统提供一套友好的消息提示机制,不会打断用户当前的操作。常用的方式Toast一种快速的即时消息。消息内容简短。悬浮于应用程序的最上方。不获得焦点。Notification消息内容显示于手机的状态栏中。按住状态栏往下拉,可以查看系统的提示消息。5.3通知Toast对象Toast类在android.widget包下。Toast对象的创建通过makeText()方法实现。Toast对象通过show()方法显示在屏幕上。Toast对象一般用于某项操作执行后是否成功的消息提示。实例:在ZSWB_Diary2中,添加Toast对象:当删除一条日志操作时给出提示。项目名为:ZSWB_Diary3。5.3通知创建Notification对象Notification类在android.app包下。Notification无须Activity,将消息内容显示在手机状态条中。创建Notification对象:方法一:Notificationmynotification=newNotification(icon,ticker,when);其中:icon是显示在状态栏中的图标,一般通过资源id表示。ticker是消息的文本内容。when是系统时间,一般可用System.currentTimeMillis()获得。方法二:Notificationmynotification=newNotification();mynotification.icon=R.drawable.header;mynotification.tickerText=getResources().getString(R.string.notification);…5.3通知Notification包含如下功能:创建新的状态栏图标;在扩展的状态条窗口显示额外的信息(也可以启动另一个Intent);其它提示形式:闪烁/LED,让手机震动,发出声音(铃声,媒体库歌曲)等。设置Notification对象缺省表现形式:Notification.DEFAULT_VIBRATE:Notification显示时伴随振动。Notification.DEFAULT_SOUND:Notification显示时伴随音乐。Notification.DEFAULT_ALL:Notification显示时伴随振动和音乐。例:mynotification.defaults=Notification.DEFAULT_SOUND;模拟器不支持震动。5.3通知由Notification启动另一活动设置点击状态栏中的Notification时发送的Intent对象。例如,当点击状态栏的Notification时启动另一个活动,该活动名为NotifiedActivity。代码如下:Intenti=newIntent(this,NotifiedActivity.class);PendingIntentpi=PendingIntent.getActivity(this,0,i,0);PendingIntent:PendingIntent就是一个Intent的描述,相当于对intent执行了包装,我们不一定一定要马上执行它,我们将其包装后,传递给其他activity或application。点击状态栏中的Notification启动另一个活动。代码如下:myNotification.setLatestEventInfo(this,"示例","点击查看",pi);setLatestEventInfo:设置显示在拉伸状态栏中的Notification对象的属性,单击后将发送PendingIntent对象。。5.3通知NotificationManager所有的Notification都由NotificationManager来管理,通过NotificationManager显示出来。例:NotificationManagernotificationManager=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);notificationManager.notify(0,myNotification); //发送NotificationNotificationManager常用方法5.3通知方法描述cancel(intid)取消以前显示的一个NotificationcancelAll()取消以前显示的一个所有NotificationgetSystemService(NOTIFICATION_SERVICE)初始化一个NotificationManager对象notify(intid,Notificationnotification)把Notification持久地发送到状态条上使用Notification和NotificationManager的基本步骤:⑴获取NotificationManager对象。⑵创建一个Notification对象。⑶设置Notification的各个属性:设置在状态条(StatusBar)显示的通知文本提示设置发出提示音设置手机振动设置LED灯闪烁设置对通知的单击事件处理⑷发送通知。5.3通知5.4ActionBarAndroid操作系统在3.0之后引入两个比较重要的更新,一个是ActionBar,另一个是Fragment。ActionBarMenu与Title的融合!四个区域的应用两种导航方式5.4ActionBar5.4ActionBar使用android:showAsAction属性never,该菜单项不显示在ActionBar上。ifRoom,当ActionBar上有足够的空间时,显示该菜单项。always,一直显示该菜单项。withText,菜单项的图标和文本信息都显示在ActionBar上。(菜单项默认只显示图标)collapseActionView,将ActionView折叠为普通的菜单项。5.4ActionBar<!--定义一个可单选的菜单项--><itemandroid:title="医疗服务"android:icon="@drawable/medical05"android:showAsAction="always|withText"><menu><groupandroid:checkableBehavior="single"><itemandroid:id="@+id/menu_item1"android:icon="@drawable/medical01"android:title="病例记录"/><itemandroid:id="@+id/menu_item2"android:icon="@drawable/medical02"android:title="查询药物"/><itemandroid:id="@+id/menu_item3"android:icon="@drawable/medical04"android:title="预约检测"/></group></menu></item> <item android:id="@+id/menu_item4" android:icon="@drawable/medical03" android:title="紧急呼救" android:showAsAction="ifRoom|withText" /></menu>5.4ActionBar启用应用程序图标ActionBar的第一个区域是应用程序的图标,默认情况下,该图标不可以单击,也就无法处理响应功能。图标的ID默是android.R.id.home。actionBar.setDisplayHomeAsUpEnabled(true);启用之后,该图标可以点击5.4ActionBar标签导航ActionBar可以使用Tab在不同的fragment之间切换。Tab区域,与TabHost中的Tab不同Fragment区域使用ActionBar的Tab导航功能需要设置setNavigationMode(intmode),导航模式,其中参数mode的取值为:NAVIGATION_MODE_STANDARD,标准导航。NAVIGATION_MODE_LIST,下拉列表导航。NAVIGATION_MODE_TABS,标签导航。5.4ActionBar5.4ActionBar下拉导航//确定列表导航actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);//新建列表适配器ArrayAdapteraa=newArrayAdapter(this,R.layout.listlayout, R.id.listlayout_text,newString[]{"时政要闻","科技资讯","体坛快报"});//设置列表导航的数据和监听器actionBar.setListNavigationCallbacks(aa,newMyNavigationListener());Fragment5.5FragmentFragment是什么?如何使用Fragment?如何管理Fragment?Fragment如何通讯?5.5FragmentFragment是Android3.0之后引入的系统组件,主要目的是在大屏幕设备(Android3.0之后支持平板),支持更加动态和灵活的UI设计。较大的屏幕有更多的空间来放更多的UI组件,并且这些组件之间会产生更多的交互。5.5Fragment创建并使用Fragment,通常需要实现以下三个方法:onCreate,创建Fragment对象时调用,可以初始化Fragment中的控件,与Activity的onCreate方法类似。onCreateView,绘制用户界面的方法,该方法必须返回要创建的Fragment视图UI控件。如果不需要提供Fragment界面,则可以返回NULL。onPause,当用户离开这个Fragment的时候调用,在该方法中可以进行数据的持久化处理。5.5FragmentFragment生命周期5.5FragmentonAttach(),当Fragment被添加到Activity中时执行,该方法只会执行一次。onCreate(),Fragment创建时执行,该方法只会执行一次,类似于Activity的onCreate方法。onCreateView(),用于绘制Fragment的视图界面,Fragment显示的界面是该方法返回的View。onStart(),Fragment启动阶段执行。onResume(),onStart执行后,立即执行onResume,与Activity中的onResume类似。onPause(),Fragment失去焦点时执行,与Activity中onPause类似。onStop(),Fragment不可见时执行,与Activity中的onStop类似。onDestroyView(),销毁Fragment所包含的View控件。onDestroy(),Fragment销毁时执行该方法,与Activity的onDestroy类似,只会执行一次。onDetach(),Fragment从Act

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论