android项目教程自定义菜单
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
选项菜单:选项菜单是一种经常使用的菜单,用户可以通过菜单键打开
选项菜单。 子菜单:子菜单就是二级菜单,用户单击选项菜单或快捷菜单中的菜单
项就可以打开子菜单。
快捷菜单:快捷菜单类似于计算机程序中的“右键菜单”,当用户单击 界面上某个元素超过2秒后,将启动注册到该界面元素的快捷菜单。
5
项目十二 自定义菜单
在New XML File对话框中, 输 入 File name 为 contextenu.xml , 然 后 单 击 【Finish】 按 钮 , 如 图 12-7所示。
图12-7 输入文件名
13
项目十二 自定义菜单
三 ︑ 项 目 实 施 过 程
9
双 击 contextmenu.xml 文 件打开,如图12-8所示。
项目十二 自定义菜单
一 ︑ 项 目 要 求
项目要求
掌握动态 生成菜单 的方法。
掌握将菜
单配置到
资源文件 的方法。
掌握选项 菜单的使
掌握子菜 单的使用
掌握快捷 菜单的使
用方法。
方法。
用方法。
3
项目十二 自定义菜单
二 ︑ 项 目 相 关 知 识
菜单是应用程序中非常重要的 组成部分,能够在不占用界面 空间的前提下,为应用程序提 供统一的选择功能和设置界面。 Android 系统支持三种菜单模
menu.add(0,1,1,"菜单项1");
menu.add(0,2,2,"菜单项2"); menu.add(0,3,3,"菜单项3"); return true;
}
17
项目十二 自定义菜单
三 ︑ 项 目 实 施 过 程
@Override public boolean onOptionsItemSelected(MenuItem item) { // TODO Auto-generated method stub switch(item.getItemId()){ case 1: Toast.makeText(this,"您单击了菜单项1",2000).show(); break; case 2: Toast.makeText(this,"您单击了菜单项2",2000).show(); break; case 3: Toast.makeText(this,"您单击了菜单项3",2000).show(); break; } return true; }
11
项目十二 自定义菜单
三 ︑ 项 目 实 施 过 程
7
在弹出的 New 对话框中,打 开 XML 文件夹, 选中里面的 XML File 项 , 然 后 单 击 【Next】按钮 ,如图 12-6 所 示。
图12-6 选中XML File
12
项目十二 自定义菜单
三 ︑ 项 目 实 施 过 程
8
修改程序,增加一个菜单选项,用两种方式实现:在代码中动态添加,在 XML文件中添加,并增加一个子菜单项,如图12-11所示。
四 ︑ 项 目 思 考 与 扩 展
初始状态
动态添加菜单选项 图12-11 程序运行效果
xml添加子菜单
23
Android移动开发
项目化教程
03
进阶篇
项目十二 自定义菜单
本 章 导 读
菜单是 Android 应用程序 UI 设计中必不可缺的 一个部分,Android系统中为我们提供了三种不 同形式的菜单:可选项菜单(Options Menu)、 子菜单( SubMenu )和上下文菜单( Context Menu)。开发人员可根据设计需要自行选择。 本章,我们就学习菜单的设计与开发。
式,分别是选项菜单、子菜单
和快捷菜单。
4
项目十二 自定义菜单
二 ︑ 项 目 相 关 知 识
Android 程序的菜单可以在代码中动态生成,也可以使用 XML 文件制作菜
单资源,然后通过inflate() 函数映射到程序代码中。使用XML文件描述菜单是
程序员开发时较好的选择,可以将菜单内容与代码分离,有利于分析和调整菜 单结构。
Folder name 为menu,单击
【Finish】按钮,如图12-4所 示。
图12-4 New Folder对话框
10
项目十二 自定义菜单
6
三 ︑ 项 目 实 施 过 程
右击res目录下的menu文件夹,在弹出的快捷菜单中选择【New】→【Other】命令,如图 12-5所示。
图12-5 单击Other
6
项目十二 自定义菜单
02 XML布局文件的开发
三 ︑ 项 目 实 施 过 程
1
设计初始界面,如图12-2所示。
2
通 过 【res】→【layout】 路 径 , 找到 main.xml 文件,双击打开, 然 后 单 击 下 面的 【main.xml】 标 签进入代码编辑界面。
图2-1 Oracle官方下载页面
18
项目十二 自定义菜单
2
三 ︑ 项 目 实 施 过 程
添加快捷菜单、快捷菜单的子菜单及菜单项的单击事件,该快捷菜单及其子菜单在XML
文件中配置。
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.contextmenu, menu); } public boolean onContextItemSelected(MenuItem item) { switch(item.getItemId()){ case R.id.menu_02: Toast.makeText(this,"您单击了快捷菜单项2",2000).show();单
4
三 ︑ 项 目 实 施 过 程
按【Ctrl+S】组合键保存退出,右击res目录,在弹出的快捷菜单中单击【New】→【Folder】 命令,如图12-3所示。
图12-3 单击Folder
9
项目十二 自定义菜单
三 ︑ 项 目 实 施 过 程
5
在 New Folder 对话框中输入
三 ︑ 项 目 实 施 过 程
下面我们就通过做一个简单
的程序,来学习菜单的使用。
01
创建工程
创建名为AndroidCode12 的 Android 工 程 , 包 结 构 为 “ com.xdxy.menu”,Activity 名为 MenuActivity ,如图 12-1 所示。
图11-4 创建工程
7
项目十二 自定义菜单
3
三 ︑ 项 目 实 施 过 程
删除main.xml自带的TextView,添加一个自己的TextView。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/tv" android:background="#FF123232" android:layout_width="fill_parent" android:layout_height="100dp" android:gravity="center_vertical|center_horizontal" android:textSize="30sp" android:text="长按2秒" /> </LinearLayout>
19
项目十二 自定义菜单
三 ︑ 项 目 实 施 过 程
Toast.makeText(this,"您单击了快捷菜单项3",2000).show(); break; case R.id.submenu_01: Toast.makeText(this,"您单击了子菜单项1",2000).show(); break; case R.id.submenu_02: Toast.makeText(this,"您单击了子菜单项2",2000).show(); break; case R.id.submenu_03: Toast.makeText(this,"您单击了子菜单项3",2000).show(); break; }
21
项目十二 自定义菜单
4
三 ︑ 项 目 实 施 过 程
按【Ctrl+S】组合键保存,运行程序。部分效果如图12-9和图12-10所示。
初始效果
长按2秒后结果
单击【快捷菜单2】结果 单击【快捷菜单1】结果 单击【子菜单1】结果
图12-9 程序运行效果
图12-10 程序运行效果
22
项目十二 自定义菜单
图12-8 双击打开
14
项目十二 自定义菜单
10
在contextmenu.xml文件中,添加代码,添加好后按【Ctrl+S】键保存退出。
<?xml version="1.0" encoding="UTF-8"?> <menu xmlns:android="/apk/res/android"> <item android:id="@+id/menu_01" android:title="快捷菜单1"> <menu > <item android:id="@+id/submenu_01" android:title="子菜单1"/> <item android:id="@+id/submenu_02" android:title="子菜单2"/>
三 ︑ 项 目 实 施 过 程
15
项目十二 自定义菜单
三 ︑ 项 目 实 施 过 程
<item
android:id="@+id/submenu_03"
android:title="子菜单3"/> </menu> </item>
<item
android:id="@+id/menu_02" android:title="快捷菜单2"/> <item android:id="@+id/menu_03" android:title="快捷菜单3"/> </menu>
return true;
}
20
项目十二 自定义菜单
三 ︑ 项 目 实 施 过 程
3
为 界 面 控 件 TextView 注 册 快捷菜单。
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(yout.main); TextView tv = (TextView)findViewById(); registerForContextMenu(tv); }
16
项目十二 自定义菜单
03 Java文件的开发
三 ︑ 项 目 实 施 过 程
1
打开MenuActivity.Java文件,开始编辑源代码,为界面添加选项菜单及菜单项单击事件, 该菜单动态生成。
public boolean onCreateOptionsMenu(Menu menu) { // TODO Auto-generated method stub