Android教案.docx
- 文档编号:30129795
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:30
- 大小:617.42KB
Android教案.docx
《Android教案.docx》由会员分享,可在线阅读,更多相关《Android教案.docx(30页珍藏版)》请在冰豆网上搜索。
Android教案
第四章菜单和动作条
1.菜单分类:
选项菜单(OptionsMenu)、上下文菜单(ContextMenu)、弹出菜单(PopupMenu)
2.菜单资源:
使用XML格式定义菜单资源
xmlversion="1.0"encoding="utf-8"?
>
android=" android: id="@+id/group1" android: checkableBehavior="single"> android: id="@+id/red" android: alphabeticShortcut="r" android: title="@string/red_title"> android: id="@+id/green" android: alphabeticShortcut="g" android: title="@string/green_title"> android: id="@+id/blue" android: alphabeticShortcut="b" android: title="@string/blue_title"> P90 3.实现选项菜单 1)修改选项菜单资源文件menu/main.xml 添加菜单子元素
checkableBehavior="single"> android: id="@+id/font_10" android: title="@string/font_10"> android: id="@+id/font_12" android: title="@string/font_12"> android: id="@+id/font_14" android: title="@string/font_14"> android: id="@+id/font_16" android: title="@string/font_16"> android: id="@+id/font_18" android: title="@string/font_18"> 2)在Activity中加载定义好的菜单资源main.xml,实例化 publicbooleanonCreateOptionsMenu(Menumenu){ //Inflatethemenu;thisaddsitemstotheactionbarifitispresent. getMenuInflater().inflate(R.menu.main,menu); returnsuper.onCreateOptionsMenu(menu); } 3)响应菜单选项选择事件 @Override publicbooleanonOptionsItemSelected(MenuItemitem){ //TODOAuto-generatedmethodstub item.setChecked(true); switch(item.getItemId()){ caseR.id.item1: item.setChecked(true); tv.setTextColor(Color.RED); break; caseR.id.item2: item.setChecked(true); tv.setTextColor(Color.GREEN); break; caseR.id.item3: item.setChecked(true); tv.setTextColor(Color.BLUE); break; default: break; } returnsuper.onOptionsItemSelected(item); } 4)最终实现 ///////////////////////////////////////////////////////////////////// 4.实现上下文菜单 1)创建上下文菜单XML文件contextmenu.xml xmlversion="1.0"encoding="utf-8"? > android=" android: id="@+id/group1" android: checkableBehavior="single"> android: id="@+id/red" android: alphabeticShortcut="r" android: title="@string/red_title"> android: id="@+id/green" android: alphabeticShortcut="g" android: title="@string/green_title"> android: id="@+id/blue" android: alphabeticShortcut="b" android: title="@string/blue_title"> 2)为控件对象注册上下文菜单 publicclassMainActivityextendsActivity{ privateTextViewtv; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv=(TextView)findViewById(R.id.text_title); registerForContextMenu(tv); 注意: 因为不是所有的控件都需要上下文菜单,所以只有通过registerForContextMenu(view);方法注册,才可以为该对象view创建对应的上下文菜单。 3)加载获取菜单资源 publicvoidonCreateContextMenu(ContextMenumenu,Viewv, ContextMenuInfomenuInfo){ //TODOAuto-generatedmethodstub super.onCreateContextMenu(menu,v,menuInfo); getMenuInflater().inflate(R.menu.context,menu); menu.setHeaderTitle("请选择背景颜色"); } 4)响应Item选择事件 @Override publicbooleanonContextItemSelected(MenuItemitem){ //TODOAuto-generatedmethodstub item.setChecked(true); switch(item.getItemId()){ caseR.id.red: item.setChecked(true); tv.setBackgroundColor(Color.RED); break; caseR.id.green: item.setChecked(true); tv.setBackgroundColor(Color.GREEN); break; caseR.id.blue: item.setChecked(true); tv.setBackgroundColor(Color.BLUE); break; default: break; } returntrue; } 5)最终实现 ///////////////////////////////////////////////////////////////////// 实现ContextMenu,一般要用到以下三个方法: (1)registerForContextMenu(getExpandableListView()); (2)onCreateContextMenu(ContextMenumenu,Viewv,ContextMenuInfomenuInfo); (3)onContextItemSelected(MenuItemitem); >>ContextMenu和OptionsMenu相比主要有以下区别: 1,ContextMenu必须通过Activity的registerForContextMenu(View)来进行注册,而OptionsMenu不用。 2,ContextMenu不支持icon,而OptionsMenu支持。 3,ContextMenu可以有头,可以通过setHeaderIcon,setHeaderTitle,setHeaderView来设置头,否则就没有头。 4,弹出的方式不一样。 5,OptionsMenu的拥有者是Activity,而上下文菜单的拥有者是Activity中的View。 每个Activity有且只有一个OptionsMenu,它为整个Activity服务。 而一个Activity往往有多个View,并不是每个View都有上下文菜单,这就需要我们调用registerForContextMenu(Viewview)来指定。 //////////////////////////////////////////////////////////////// 5.实现弹出菜单(类似上下文菜单) 1)创建弹出菜单XML文件popupmenu.xml xmlversion="1.0"encoding="utf-8"? > android=" android: id="@+id/menu_red" android: title="@string/red_title"android: checkable="true"> android: id="@+id/menu_green" android: title="@string/green_title"android: checkable="true"> android: id="@+id/menu_blue" android: title="@string/blue_title"> 2)创建PopupMenu对象和显示弹出菜单 finalButtonbtn=(Button)findViewById(R.id.new_button); finalPopupMenupopupMenu=newPopupMenu(this,btn); popupMenu.inflate(R.menu.popupmenu); btn.setOnClickListener(newView.OnClickListener(){ @Override publicvoidonClick(Viewarg0){ //TODOAuto-generatedmethodstub popupMenu.show(); } }); 3)菜单选项事件处理(只能通过popupMenu对象监听器实现) popupMenu.setOnMenuItemClickListener(newPopupMenu.OnMenuItemClickListener(){ @Override publicbooleanonMenuItemClick(MenuItemarg0){ //TODOAuto-generatedmethodstub switch(arg0.getItemId()){ caseR.id.menu_red: btn.setTextColor(Color.RED); break; caseR.id.menu_green: btn.setTextColor(Color.GREEN); break; caseR.id.menu_blue: btn.setTextColor(Color.BLUE); break; default: break; } returnfalse; } }); 4)最终实现 /////////////////////////分隔线/2015.10.19/////////////////////////// 6.动作条(ActionBar) Android3.0之后引入的新的对象,ActionBar可以说是一个方便快捷的导航神器。 它可以作为活动的标题,突出活动的一些关键操作(如“搜索”、“创建”、“共享”等)、作为菜单的灵活使用,还可以实现类似TabWidget的标签功能以及下拉导航的功能,系统能够很好根据不同的屏幕配置来适应ActionBar的外观,配合起Fragemtn可谓是十分强大。 那么,对于今天的主角ActionBar怎么去添加? 在Android3.0默认主题HloleFraphic(全息)主题中,已经创造了ActionBar,所以只要targetSdkVersion的值不低于11,创建的Activity中默认都会带有ActionBar。 例如: 本周包括以下内容: 1)显示与隐藏ActionBar 2)使用ActionBar显示OptionMenu的菜单项MenuItem 3〉使用程序图标导航 4)添加ActionView ///////////////////////////////////////////////////////////////////////////////////////// 1)显示与隐藏ActionBar 方法一: 修改AndroidManifest.xml theme="@android: style/Theme.Holo.NoActionBar"> 或者 android: theme="@android: style/Theme.NoTitleBar"/> 方法二: 程序运行中修改 在运行时通过调用hide()隐藏ActionBar。 自然也有show()。 ActionBar actionBar = getActionBar(); actionBar.hide(); //actionBar.show(); 2)使用ActionBar显示OptionMenu的菜单项MenuItem 问题: 有些手机没有Menu按钮,如何弹出OptionMenu? 解决步骤: 1.修改选项菜单文件main.xml 2.将选项菜单资源文件中的每个 showAsAction="always"属性 3.在Activity类中添加和重写以下方法 publicbooleanonCreateOptionsMenu(Menumenu){ //TODOAuto-generatedmethodstub MenuInflaterinflater=newMenuInflater(this); inflater.inflate(R.menu.main,menu); returnsuper.onCreateOptionsMenu(menu); } @Override publicbooleanonOptionsItemSelected(MenuItemitem){ //TODOAuto-generatedmethodstub switch(item.getItemId()){ caseandroid.R.id.home: //创建启动MainActivity的Intent Intentintent=newIntent(this,MainActivity.class); //添加额外的Flag,将Activity栈中处于MainActivity之上的Activity弹出 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); break; caseR.id.item1: Intentintent1=newIntent(this,Help.class); startActivity(intent1); break; default: break; } returnsuper.onOptionsItemSelected(item); } 4.运行程序,看效果。 //////////////////////////////////////////////////////// 3)使用程序图标导航 初始化前: 初始化后: 1.在protectedvoidonCreate(BundlesavedInstanceState)方法中添加以下代码,对ActionBar初始化设置: ActionBaractionBar=getActionBar();//获取ActionBar对象 actionBar.setDisplayShowHomeEnabled(true);//显示应用程序图标 actionBar.setDisplayHomeAsUpEnabled(true);//将应用程序图标转变为可点击图标,并添加一个返回箭头。 2.实现点击程序图标后返回到上一个页面(程序图标的ID默认为Android.R.id.home) @Override PublicbooleanonOptionsItemSelected(MenuItemitem){ //TODOAuto-generatedmethodstub switch(item.getItemId()){ caseandroid.R.id.home: //创建启动MainActivity的Intent Intentintent=newIntent(this,MainActivity.class); //添加额外的Flag,将Activity栈中处于MainActivity之上的Activity弹出 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); break; default: break; } returnsuper.onOptionsItemSelected(item); } 3.实现效果 /////////////////////////////////////////////////////////////////////////////// 4)添加ActionView ActionBar除了可以显示普通的ActionItem之外,还可以显示普通的UI控件,如在ActionBar上显示一个时钟。 方法: 定义ActionItem时使用android: actionLayout="@layout/clock"属性指定ActionView对应的视图布局资源。 步骤: 1.在layout文件夹中新建一个显示时钟的布局文件clock.xml xmlversion="1.0"encoding="utf-8"? > android=" android: layout_width="match_parent" android: layout_height="match_parent" android: orientation="vertical"> android: id="@+id/analogClock1" android: layout_width="wrap_content" android: layout_height="wrap_content"/> 2.在菜单资源文件main.xml中添加ActionItem android: id="@+id/item3" android: actionLayout="@layout/clock" android: showAsAction="always" android: title="时钟"> 3.查看效果 //////////////////////////////分割线2015.10.25////////////////////////////// 第5章发送和接收信息 主要内容: 一、Intent的基本作用 二、Activity之间的跳转 三、使用Intent在Activity之间传递数据的基本方法 回顾: 二、Activity之间跳转 Intentintent=newIntent(); intent.setClass(MainActivity.this,CheckActivity.class); startActivity(intent); MainActivity.this.finish(); 或者: Intentintent1=newIntent(this,help.class); startActivity(intent1); 还可以: startActivity(newIntent(this,help.class)); 1.Intent的基本作用 Intent的介绍 Intent的中文意思是“意图,意向”,在Android中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 教案