菜单(menu)Intent和Activity介绍与实例介绍与实例.ppt
《菜单(menu)Intent和Activity介绍与实例介绍与实例.ppt》由会员分享,可在线阅读,更多相关《菜单(menu)Intent和Activity介绍与实例介绍与实例.ppt(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1010菜单(菜单(menumenu),Intent,Intent和和ActivityActivity介绍与实例介介绍与实例介绍与实例绍与实例程浩程浩 2006,ZTE Corporation.All rights reserved.学习目标学习目标 菜单(菜单(menumenu)介绍与实例)介绍与实例 IntentIntent和和ActivityActivity介绍与实例介绍与实例 2006,ZTE Corporation.All rights reserved.菜单(菜单(menumenu)介绍与应用)介绍与应用 在上一次课中,我们学习了在上一次课中,我们学习了AndroidAndroid
2、中常用组件的用法和页面布局中常用组件的用法和页面布局的技巧知识。在这次课中,我们来学习的技巧知识。在这次课中,我们来学习AndroidAndroid中另外一个比较特殊的部中另外一个比较特殊的部分,分,menumenu的使用。的使用。菜单,是手机开发中最常见的一种控件。通常分为列表式菜单,下菜单,是手机开发中最常见的一种控件。通常分为列表式菜单,下拉式菜单,弹出式菜单等多种,但是在拉式菜单,弹出式菜单等多种,但是在androidandroid中,对菜单进行了统一。中,对菜单进行了统一。虽然进行了统一,但是在功能实现上,并没有很大的改变,均是先添加虽然进行了统一,但是在功能实现上,并没有很大的改变
3、,均是先添加菜单选项,然后对每一个选项编写对应的响应程序。菜单选项,然后对每一个选项编写对应的响应程序。下面我们制作一个实例来讲解菜单的使用方法:下面我们制作一个实例来讲解菜单的使用方法:2006,ZTE Corporation.All rights reserved.第一步:第一步:新建一个项目。(这里我们已新建一个项目。(这里我们已经创建好了,经创建好了,ex07_menuex07_menu)在新建项目的对话框中,选择在新建项目的对话框中,选择Creat project from existing Creat project from existing sourcesource项项 单击浏
4、览,找到单击浏览,找到ex07_menuex07_menu项目,项目,然后单击确定。然后单击确定。菜单(菜单(menumenu)实际编程实现)实际编程实现 程序目录结构程序目录结构 2006,ZTE Corporation.All rights reserved.第二步第二步:我们先来看一下布局的我们先来看一下布局的xmlxml文件,在文件,在layoutlayout目录中的目录中的main.xmlmain.xml这个这个XMLXML文件,代码如下:文件,代码如下:菜单(菜单(menumenu)实际编程实现)实际编程实现 2006,ZTE Corporation.All rights rese
5、rved.代码解释:代码解释:TextViewTextView这个是文本框控件,负责在一块区域上边显示一段文本。这个是文本框控件,负责在一块区域上边显示一段文本。AndroidAndroid:layout_widthlayout_width设置这个设置这个ButtonButton的宽度,的宽度,ButtonButton的宽度为的宽度为“wrap_content”“wrap_content”,即刚好把显示在即刚好把显示在ButtonButton上的内容包裹住。上的内容包裹住。AndroidAndroid:layout_heightlayout_height设置这个设置这个ButtonButton
6、的高度。的高度。注意到注意到 这个符号。这个符号提示这个符号。这个符号提示XMLXML文件的解析器应当对文件的解析器应当对 后的名字进后的名字进行解析,例如,代码中的行解析,例如,代码中的string/button1,string/button1,那么解析器会从那么解析器会从values/string.xmlvalues/string.xml里边读取里边读取Button1 Button1 这个变量的值,进行替换。也就是这个变量的值,进行替换。也就是string/button1string/button1,相当于,相当于联盟联盟中中的的Button1Button1 菜单(菜单(menumenu)
7、实际编程实现)实际编程实现 2006,ZTE Corporation.All rights reserved.第三步第三步:创建创建onCreate()onCreate()方法方法,代码如下代码如下:public void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.main);button1=(Button)findViewById(R.id.button1);button2=(Button)findViewById(R.id.button2);Te
8、xtView text_view_lm=(TextView)findViewById(R.id.text_view_lm);TextView text_view_bl=(TextView)findViewById(R.id.text_view_bl);button1.setVisibility(View.INVISIBLE);button2.setVisibility(View.INVISIBLE);text_view_lm.setVisibility(View.INVISIBLE);text_view_bl.setVisibility(View.INVISIBLE);这里设置两个这里设置两个
9、ButtonButton为不可见为不可见.第四步第四步:创建创建onCreateOptionsMenu()onCreateOptionsMenu()方法方法.这个方法负责生成这个方法负责生成menu,menu,它是一个回调方法它是一个回调方法,即当按下手机设备上的即当按下手机设备上的menumenu按钮的时候按钮的时候AndroidAndroid系统才生成一个包含两个子项的菜单系统才生成一个包含两个子项的菜单.在在onCreateOptionsMenu()onCreateOptionsMenu()方法里面方法里面,首先得到首先得到supersuper函数调用后的返函数调用后的返回值回值.并且在
10、方法的最后进行返回并且在方法的最后进行返回.菜单(菜单(menumenu)实际编程实现)实际编程实现 2006,ZTE Corporation.All rights reserved.调用调用menu.add()menu.add()为为menumenu添加一项添加一项.实现代码如下实现代码如下:public boolean onCreateOptionsMenu(Menu menu)super.onCreateOptionsMenu(menu);menu.add(0,ITEM0,0,“联盟联盟);menu.add(0,ITEM1,0,“部落部落);menu.findItem(ITEM1);re
11、turn true;代码分析代码分析:groupId:groupId:分组的分组的id,id,如果不用分组就用如果不用分组就用0 0ItemId:menuItemId:menu当中每一项的当中每一项的id.id.这个这个idid应该是唯一的应该是唯一的Order:Order:排序的信息排序的信息,根据这个字段的大小根据这个字段的大小,menu,menu对其中的项进行排序显示对其中的项进行排序显示.orader.orader小的显示在前面小的显示在前面,大的在后面大的在后面.titleRes:menutitleRes:menu项的显示信息项的显示信息.菜单(菜单(menumenu)实际编程实现)
12、实际编程实现 2006,ZTE Corporation.All rights reserved.第五步第五步:实现实现menumenu响应单击事件响应单击事件.这里使用的是方法这里使用的是方法onOptionsItemSelected(MenuItem item),onOptionsItemSelected(MenuItem item),由于该由于该方法的前缀是方法的前缀是on,on,所以依照惯例这依然是一个回调方法所以依照惯例这依然是一个回调方法.既这个方法只有既这个方法只有在事件触发后才会被在事件触发后才会被AndroidAndroid系统自动调用执行系统自动调用执行.而这个事件就是单击菜
13、而这个事件就是单击菜单里的某一项单里的某一项(MenuItem),(MenuItem),看到这个方法传进来的参数是看到这个方法传进来的参数是MenuItem,MenuItem,也就也就是是menumenu当中的某一项当中的某一项,实现代码为实现代码为:public boolean onOptionsItemSelected(MenuItem item)switch(item.getItemId()case ITEM0:actionClickMenuItem1();break;case ITEM1:actionClickMenuItem2();break;return super.onOptio
14、nsItemSelected(item);菜单(菜单(menumenu)实际编程实现)实际编程实现 2006,ZTE Corporation.All rights reserved.代码解释代码解释:如何判断单击的那个如何判断单击的那个MenuItemMenuItem到底是哪一个呢到底是哪一个呢?这里前面设置过的这里前面设置过的idid就发挥作就发挥作用了用了.在前面生成一个在前面生成一个menumenu的时候的时候,给每一个给每一个menuItemmenuItem都赋予一个唯一的都赋予一个唯一的id,id,通过通过这个唯一的这个唯一的id,id,可以区分到底是单击的哪个可以区分到底是单击的哪
15、个menuItem.menuItem.这个这个idid通过通过item.getItemIditem.getItemId()()获得获得.在上边的代码中可以看到在上边的代码中可以看到,当用户单击当用户单击ITEM0ITEM0的时候执行的时候执行actionClickMenuItem1actionClickMenuItem1()()方法方法,同理单击到同理单击到ITEM1ITEM1的时候的时候,执行执行actionClickMenuItem2()actionClickMenuItem2()的方法的方法.这两个方这两个方法负责显示两个不同阵营的种族法负责显示两个不同阵营的种族.菜单(菜单(menum
16、enu)实际编程实现)实际编程实现private void actionClickMenuItem1()setTitle(联盟);button1.setVisibility(View.VISIBLE);button2.setVisibility(View.INVISIBLE);TextView text_view_lm=(TextView)findViewById(R.id.text_view_lm);TextView text_view_bl=(TextView)findViewById(R.id.text_view_bl);text_view_lm.setVisibility(View.V
17、ISIBLE);text_view_bl.setVisibility(View.INVISIBLE);private void actionClickMenuItem2()setTitle(部落);button1.setVisibility(View.INVISIBLE);TextView text_view_lm=(TextView)findViewById(R.id.text_view_lm);TextView text_view_bl=(TextView)findViewById(R.id.text_view_bl);button2.setVisibility(View.VISIBLE)
18、;text_view_bl.setVisibility(View.VISIBLE);text_view_lm.setVisibility(View.INVISIBLE);2006,ZTE Corporation.All rights reserved.菜单(菜单(menumenu)界面显示)界面显示 选择联盟选择联盟 选择按钮选择按钮 选择部落选择部落 2006,ZTE Corporation.All rights reserved.之前介绍的所之前介绍的所有例子都是在一个有例子都是在一个ActivityActivity中进行,但是现实中的应中进行,但是现实中的应用往往包含好几个,甚至十几或几
19、十个用往往包含好几个,甚至十几或几十个AcvitityAcvitity。这些。这些ActivityActivity是可以是可以相互跳转的,并且它们之间也可以相互传递数据。下面我们用一个例子相互跳转的,并且它们之间也可以相互传递数据。下面我们用一个例子来讲解来讲解IntentIntent和和ActivityActivity。通过这个例子我们可以学到:。通过这个例子我们可以学到:IntentIntent的介绍,第一中的介绍,第一中IntentIntent使用方法的详细介绍使用方法的详细介绍 构建一个新的构建一个新的ActivityActivity,然后将这个,然后将这个ActivityActivi
20、ty加入到加入到AndroidAndroid的的manufestmanufest里。里。通过通过startActivity()startActivity()切换切换ActivityActivity。通过通过startActivityForResult()startActivityForResult()调用调用ActivityActivity。不同的不同的ActivityActivity之间进行相互数据的传递。之间进行相互数据的传递。IntentIntent和和ActivityActivity介绍与实例介绍与实例 2006,ZTE Corporation.All rights reserved.
21、第一步:第一步:打开打开demodemo程序中的程序中的ex07_activity_intentex07_activity_intent项目,首先看一项目,首先看一下下ActivityMainActivityMain里的创造函数里的创造函数onCreateonCreate,代码如下:,代码如下:setContentView(R.layout.main);button1=(Button)findViewById(R.id.button1);button1.setOnClickListener(listener1);button2=(Button)findViewById(R.id.button2
22、);button2.setOnClickListener(listener2);setTitle(魔兽世界最新版本魔兽世界最新版本3.3巫妖王的陨落巫妖王的陨落);首先是把首先是把layoutlayout目录当中目录当中main.xmlmain.xml中的中的layoutlayout显示出来。然后得到显示出来。然后得到两个两个ButtonButton的应用,依次各绑定一个单击监听器(的应用,依次各绑定一个单击监听器(OnClickListenerOnClickListener)IntentIntent和和ActivityActivity实例编程实现实例编程实现 2006,ZTE Corpora
23、tion.All rights reserved.第二步:当单击第二步:当单击“部落阵营部落阵营”的时候,程序跳转到的时候,程序跳转到Activity2Activity2。实现代码如。实现代码如下:下:listener2=new OnClickListener()public void onClick(View v)setTitle(这是在主界面这是在主界面);Intent intent2=new Intent(ActivityMain.this,Activity2.class);startActivity(intent2);当单击当单击“部落阵营部落阵营”的时候,系统会反向调用绑定在的时候,
24、系统会反向调用绑定在button2button2上的监上的监听器的听器的onClick()onClick()方法。方法。Intent intent2=new Intent(ActivityMain.this,Intent intent2=new Intent(ActivityMain.this,Activity2.class);Activity2.class);语句用来新建一个语句用来新建一个IntentIntent,这个,这个IntentIntent描述了从描述了从ActivityMainActivityMain跳转到跳转到Acvitity2Acvitity2的一次操作。的一次操作。star
25、tActivity(intent2);startActivity(intent2);语句用来启动语句用来启动intent2,intent2,由由intent2intent2描述的这次描述的这次操作才开始执行。操作才开始执行。IntentIntent和和ActivityActivity实例编程实现实例编程实现 2006,ZTE Corporation.All rights reserved.在在AndroidAndroid的官方文档中是这么定义的,的官方文档中是这么定义的,IntentIntent是一次即将操作的是一次即将操作的抽象描述。光这样理解这个定义还很抽象,需要大家在实际操作中去体抽象描
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 菜单 menu Intent Activity 介绍 实例
限制150内