menu键触发
三种形式:普通的option menu;上下文菜单 context menu;子菜单sub menu;
创建方式:一:在xml文件中创建menu资源,二在java代码中创建;
标签 描述 menu 是其他两个标签的容器,必须有一个menu标签作为该文件的根标签。 group
一个可选的标签,在该标签下的item内容分为一组,通过分组可以实现多个tiem共享属性。
tiem 创建了一个menuItem,即一个menu中单独的条目,在该标签下开可以包含menu标签,代表子菜单。
android自带了一些图标资源
java中使用:menu.setIcon(android.R.drawable.ic_menu_save)
xml中使用:android:icon="@android:drawable/ic_menu_sava"
普通的option menu
一:通过xml文件创建,创建在menu文件夹下:
android默认显示2行3列6个菜单项,超过留个,则会有个more...选项。
orderInCategory表示的是item的排序
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/item1" android:title="save" android:orderInCategory="0"/> <item android:id="@+id/item2" android:orderInCategory="1" android:title="管理"/> <item android:id="@+id/item3" android:title="帮助"/> <item android:id="@+id/item4" android:title="信息"/> <item android:id="@+id/item5" android:title="分享"/> <group android:id="@+id/group1" android:menuCategory="secondary"> <item android:id="@+id/groupItem1" android:title="删除"/> <item android:id="@+id/groupItem2" android:title="编辑"/> </group> </menu>
创建了options menu需要覆盖onCreatOptionsMenu(Menu menu)方法。在该方法中通过MenuInflater.inflater()方法为menu加入menu资源。
import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater=getMenuInflater(); inflater.inflate(R.menu.activity_main, menu); return super.onCreateOptionsMenu(menu); } }
很奇怪,之前怎么都运行不了,重新创建复制代码重新编译就可以运行了。
通过java代码创建menu:
重写onCreateOptionsMenu方法创建一个menu,Add方法添加MenuItem
重写onOptionItemSelected方法,监听menu操作。
import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } //覆盖该方法,创建menu @Override public boolean onCreateOptionsMenu(Menu menu) { //通过add方法,创建一个menuItem对象,参数为组ID,ItemID,顺序,显示的文本 menu.add(0, 1, 1, "分享").setIcon(android.R.drawable.ic_menu_share); menu.add(0, 2, 2, "保存").setIcon(android.R.drawable.ic_menu_save); return super.onCreateOptionsMenu(menu); } //监听menu点击事件 public boolean onOptionsItemSelected(MenuItem item){ //根据id判断点击的位置 if(item.getItemId()==1) { Toast.makeText(this, "你点击了分享", Toast.LENGTH_LONG).show(); } else if(item.getItemId()==2) { Toast.makeText(this, "你点击了保存", Toast.LENGTH_LONG).show(); } return super.onOptionsItemSelected(item); } }
子菜单SubMenu:
xml中创建:在item标签下包含新的menu标签。menu下的内容为子菜单。
java代码创建:
import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.SubMenu; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } //覆盖该方法,创建menu @Override public boolean onCreateOptionsMenu(Menu menu) { //通过add方法,创建一个menuItem对象,参数为组ID,ItemID,顺序,显示的文本 menu.add(0, 1, 1, "分享").setIcon(android.R.drawable.ic_menu_share); menu.add(0, 2, 2, "保存").setIcon(android.R.drawable.ic_menu_save); //创建子菜单,创建submenu对象,该对象调用add方法创建子菜单条目 SubMenu subMenu=menu.addSubMenu(1, 10, 10, "编辑"); subMenu.setIcon(android.R.drawable.ic_menu_edit); //增加子菜单条目 subMenu.add(2, 11, 11, "增加"); subMenu.add(2, 11, 11, "减少"); return super.onCreateOptionsMenu(menu); } }
点击编辑:
上下文菜单 context menu:
长按某选项弹出的菜单。
为任何的view绑定一个context menu,不过用的最多的是在listview中为listview的条目绑定一个contextmenu。不小心extends 成了Activity造成后面很多错误。
import android.app.ListActivity; import android.os.Bundle; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.ArrayAdapter; import android.widget.Toast; public class MainActivity extends ListActivity { private static final String[] strs=new String[]{ "first","second","third","fourth","fifth"}; public static final int CONTEXT_MENU_1=Menu.FIRST; public static final int CONTEXT_MENU_2=Menu.FIRST+1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //绑定适配器 setListAdapter(new ArrayAdapter<String> (this, android.R.layout.simple_list_item_1,strs)); registerForContextMenu(getListView()); } //创建menu public void onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo menuInfo){ super.onCreateContextMenu(menu, v, menuInfo); menu.add(0, CONTEXT_MENU_1, 1, "Context Menu 1"); menu.add(0, CONTEXT_MENU_2, 2, "Context Menu 2"); menu.setHeaderTitle("context Menu Title");//设置菜单标题 } //响应menu选择事件 public boolean onContextItemSelected(MenuItem item) { //获得listview的itemID AdapterContextMenuInfo info=(AdapterContextMenuInfo)item.getMenuInfo(); switch(item.getItemId()) { case 1:Toast.makeText(this, "你点击了第一项", Toast.LENGTH_LONG).show(); case 2:Toast.makeText(this, "你点击了第二项", Toast.LENGTH_LONG).show(); } return super.onContextItemSelected(item); } }
点击其中一项:
重启adb:
adb kill-server
adb start-server
《Objective-C初学者指南(第2版)》
基本信息
原书名:Objective-C for Absolute Beginners:iPhone, iPad, and Mac Programming Made Easy,Second Edition
作者: (美)贝内特(Bennett,G.) (美) 费希尔(Fisher,M.) (美)利斯(Lees,B.) [作译者介绍]
丛书名: 图灵程序设计丛书
出版社:人民邮电出版社
ISBN:9787115293558
上架时间:2012-9-29
出版日期:2012 年10月
开本:16开
页码:1
版次:1-1
所属分类: 计算机
更多关于 》》》《Objective-C初学者指南(第2版) 》
内容简介
书籍
计算机书籍
近年来,移动开发热潮席卷全球,苹果公司推出的ios 因其强大而完备的功能成为移动开发首选平台。要想踏上苹果移动应用开发之旅,了解objective-c 编程语言和ios 的特性是重中之重,本正是为此而写。
《objective-c初学者指南(第2版)》由浅入深地讲解了面向对象编程的基本概念、objective-c 的语法和语言特性,以xcode 集成开发环境的使用方法。本书注重实践,包含大量示例代码以及图示,鼓励开发者自己动手编写程序。每章结尾的习题会帮助读者巩固所学的知识。
《objective-c初学者指南(第2版)》是objective-c 入门的上乘指南,是移动应用爱好者的首选参考图书。
目录
《objective-c初学者指南(第2版)》
第1章 成为优秀的ios或mac 程序员 1
1.1 像开发人员一样思考 1
1.2 完成开发周期 4
1.3 面向对象编程简介 5
1.4 操纵alice界面 7
1.5 总结 9
1.6 习题 9
第2章 编程基础 10
2.1 和alice一起漫游仙境 10
2.1.1 导航菜单 11
2.1.2 世界窗口 11
2.1.3 alice中的类、对象和实例 13
2.1.4 对象树 14
2.1.5 编辑区域 14
2.1.6 细节区域 15
2.1.7 事件区域 15
2.2 创建一个alice应用——登月 16
2.3 你的第一个objective-c程序 20
2.4 总结 26
.2.5 习题 27
第3章 关于数据 28
3.1 编程中用到的数字系统 28
3.1.1 比特 28
3.1.2 字节 30
3.1.3 十六进制计数 31
3.1.4 unicode 32
3.2 数据类型 32
3.3 在alice中使用变量和数据类型 33
3.4 数据类型与objective-c 40
3.5 确定问题所在 44
3.6 总结 45
3.7 习题 45
第4章 程序流的决策与计划 46
4.1 布尔逻辑 46
4.1.1 真值表 47
4.1.2 比较运算符 49
4.2 应用设计 49
4.2.1 伪代码 50
4.2.2 设计需求 51
4.2.3 流程图 54
4.2.4 示例应用的设计和流程图 55
4.2.5 应用的设计 55
4.2.6 使用循环来重复程序语句 56
4.3 示例应用在alice中的程序实现 58
4.4 示例应用在objective-c中的程序实现 60
4.4.1 嵌套的if语句和else-if语句 62
4.4.2 删掉多余字符 62
4.4.3 通过重构改善代码 63
4.4.4 运行应用 63
4.5 和alice道别 64
4.6 总结 64
4.7 习题 65
第5章 基于objective-c的面向对象编程 66
5.1 对象 66
5.2 什么是类 67
5.3 类的设计 68
5.3.1 属性的设计 68
5.3.2 方法的设计 70
5.3.3 类的实现 71
5.4 继承 76
5.5 为什么使用oop 77
5.5.1 它无处不在 77
5.5.2 消除冗余代码 77
5.5.3 方便调试 77
5.5.4 方便替换 78
5.6 高阶课题 78
5.6.1 接口 78
5.6.2 多态 78
5.7 总结 78
5.8 习题 79
第6章 学习objective-c和xcode 80
6.1 objective-c简史 80
6.2 理解语言的符号 81
6.3 面向对象概念 82
6.4 用xcode再写一个程序 86
6.5 总结 98
6.6 习题 99
第7章 objective-c的类、对象及方法 100
7.1 创建objective-c类 100
7.1.1 声明接口和实例变量 101
7.1.2 发送消息(方法) 102
7.1.3 实现文件的使用 104
7.1.4 方法的编码 105
7.2 新类的使用 106
7.2.1 创建项目 106
7.2.2 添加对象 109
7.2.3 完成实现文件 111
7.2.4 创建用户界面 113
7.2.5 连接代码 116
7.2.6 运行程序 120
7.2.7 充分发挥类方法的作用 121
7.3 访问xcode文档 121
7.4 总结 122
7.5 习题 122
第8章 objective-c编程基础 123
8.1 集合类 123
8.1.1 使用nsset 124
8.1.2 使用nsarray 125
8.1.3 nsdictionary 126
8.1.4 确定集合元素的类型 127
8.2 使用可变类 127
8.2.1 nsmutableset 127
8.2.2 nsmutablearray 128
8.2.3 nsmutabledictionary 129
8.3 创建bookstore应用程序 130
8.4 引入实例变量 134
8.4.1 访问实例变量 134
8.4.2 使用获取方法和设置方法 135
8.5 引入属性 137
8.5.1 属性的使用 138
8.5.2 理解惯例的重要性 139
8.6 完成mybookstore程序 139
8.6.1 创建视图 140
8.6.2 添加实例变量 141
8.6.3 添加描述 142
8.6.4 创建一个简单的数据模型类 144
8.6.5 更改masterviewcontroller 147
8.6.6 更改detailviewcontroller 151
8.7 总结 152
8.8 习题 152
第9章 比较数据 153
9.1 复习布尔逻辑 153
9.2 使用关系操作符 154
9.2.1 比较数值 154
9.2.2 创建示例xcode应用 155
9.3 使用布尔表达式 158
9.3.1 比较字符串 159
9.3.2 比较日期 161
9.3.3 比较的结合 163
9.4 使用switch语句 164
9.5 总结 165
9.6 习题 166
第10章 创建用户界面 167
10.1 理解interface builder 168
10.2 模型?视图?控制器 168
10.3 人机交互界面准则(hig) 170
10.4 用interface builder创建iphone示例应用 171
10.4.1 使用interface builder 174
10.4.2 dock 175
10.4.3 库 176
10.4.4 查看器窗格和选择器工具条 177
10.4.5 创建视图 177
10.4.6 使用插口 179
10.4.7 连接动作和对象 180
10.4.8 实现文件 181
10.5 总结 182
10.6 习题 182
第11章 数据存储 183
11.1 存储注意事项 183
11.2 首选项 183
11.2.1 首选项的写操作 184
11.2.2 首选项的读操作 185
11.3 数据库 185
11.4 在数据库中存储信息 185
11.5 开始使用core data 186
11.6 模型 188
11.6.1 受控对象上下文 194
11.6.2 设置界面 194
11.7 总结 199
11.8 习题 200
第12章 协议和委托 201
12.1 多继承 201
12.2 理解协议 202
12.3 理解委托 203
12.4 下一步 204
12.5 总结 205
第13章 内存、地址和指针 206
13.1 理解内存 206
13.1.1 比特、字节和基数 207
13.1.2 十进制转换为二进制 207
13.1.3 使用十六进制的计数法 208
13.2 理解内存地址的基础 210
13.3 内存的分配 213
13.4 解除分配内存 215
13.5 在objective-c中用arc管理内存 217
13.6 没有arc的objective-c内存管理 219
13.6.1 使用保留/释放模型 220
13.6.2 处理隐含的保留消息和自动释放 221
13.6.3 发送dealloc消息 222
13.7 如果出了问题 223
13.8 arc注意事项 224
13.9 总结 224
13.10 习题 225
第14章 xcode调试器 226
14.1 准备调试 226
14.1.1 设置断点 227
14.1.2 使用断点导航器 228
14.1.3 调试基础 230
14.1.4 使用调试器控件 231
14.1.5 使用单步控件 232
14.1.6 查看线程窗口和调用栈 233
14.1.7 变量的调试 234
14.2 处理代码错误和警告 235
14.3 总结 239
本图书信息来源:中国互动出版网