您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 6-Android用户界面菜单
第2章Android用户界面-6本章学习目标•掌握选项菜单、子菜单和快捷菜单的使用方法菜单•菜单是应用程序中非常重要的组成部分,能够在不占用界面空间的前提下,为应用程序提供了统一的功能和设置界面,并为程序开发人员提供了易于使用的编程接口•Android系统支持三种菜单–选项菜单(OptionMenu)–子菜单(Submenu)–快捷菜单(ContextMenu)菜单•Android的选项菜单默认是看不见的,当用户按下MENU键时,程序菜单将会出现在屏幕下方。•Android系统默认最多只有6个菜单位,如果超过6个菜单,系统将会在第6个菜单位显示更多。•Android系统的菜单支持主要通过4个接口来体现。•选项菜单是一种经常被使用的Android系统菜单–打开方式:通过“菜单键”(MENU)打开–选项菜单分类a)图标菜单(IconMenu)b)扩展菜单(ExpandedMenu)选项菜单•图标菜单–图标菜单能够同时显示文字和图标的菜单,最多支持6个子项–图标菜单不支持单选框和复选框选项菜单•扩展菜单–扩展菜单是在图标菜单子项多余6个时才出现,通过点击图标菜单最后的子项“More”才能打开–扩展菜单是垂直的列表型菜单•不能够显示图标•支持单选框和复选框选项菜单•重载onCreateOptionMenu()方法–重载Activity的onCreateOptionMenu()方法,才能够在Android应用程序中使用选项菜单–初次使用选项菜单时,会调用onCreateOptionMenu()方法,用来初始化菜单子项的相关内容a)设置菜单子项显示的文字和图片等选项菜单publicbooleanonCreateOptionsMenu(Menumenu){menu.add(Menu.NONE,1,8,删除).setIcon(android.R.drawable.ic_menu_delete);menu.add(Menu.NONE,2,2,保存).setIcon(android.R.drawable.ic_menu_edit);menu.add(Menu.NONE,3,6,帮助).setIcon(android.R.drawable.ic_menu_help);menu.add(Menu.NONE,4,1,添加).setIcon(android.R.drawable.ic_menu_add);menu.add(Menu.NONE,5,4,详细).setIcon(android.R.drawable.ic_menu_info_details);menu.add(Menu.NONE,3,3,发送).setIcon(android.R.drawable.ic_menu_send);menu.add(Menu.NONE,7,7,分享).setIcon(android.R.drawable.ic_menu_share);menu.add(Menu.NONE,8,5,查找).setIcon(android.R.drawable.ic_menu_search);menu.add(Menu.NONE,9,9,拨号).setIcon(android.R.drawable.ic_menu_call);//返回true将显示在函数中设置的菜单,否则不能够显示菜单returntrue;}重载onCreateOptionMenu()方法menu.add(Menu.NONE,1,8,删除).setIcon(android.R.drawable.ic_menu_delete);图片都是系统自带的:android.R.drawable.ic_menu_delete选项菜单•选项菜单的add()方法a)Menu对象作为一个参数被传递到方法内部,因此在onCreateOptionsMenu()方法中,用户可以使用Menu对象的add()方法添加菜单子项b)add()方法的语法:MenuItemandroid.view.Menu.add(intgroupId,intitemId,intorder,CharSequencetitle)a)第1个参数groupId是组ID,如果不需要可以设置为Menu.NONE。b)第2个参数itemId:menu当中每一项的id.这个id应该是唯一的c)第3个参数order是排序的信息,根据这个字段的大小,menu对其中的项进行排序显示.orader小的显示在前面,大的在后面.d)第4个参数title是菜单子项所显示的标题选项菜单•重载onOptionsItemSelected(MenuItemitem)方法–重载onOptionsItemSelected(MenuItemitem)方法,当用户单击指定菜单项时,程序可以为菜单项的单击事件提供响应。如果需要针对不同菜单提供响应,就要在onOptionsItemSelected(MenuItemitem)方法中进行判断。由于程序需要在该方法中准确判断是哪个菜单项被单击了,因此添加菜单时应为每个菜单项指定ID。–MenuItem.getItemId()方法可以获取到被选择菜单子项的ID–onOptionsItemSelected()的返回值表示是否对菜单的选择事件进行处理如果已经处理过则返回true,否则返回false选项菜单选项菜单•重载onOptionsItemSelected(MenuItemitem)方法publicbooleanonOptionsItemSelected(MenuItemitem){switch(item.getItemId()){case1:Toast.makeText(this,删除,Toast.LENGTH_LONG).show();break;case2:Toast.makeText(this,保存,Toast.LENGTH_LONG).show();break;case3:Toast.makeText(this,帮助,Toast.LENGTH_LONG).show();break;case4:Toast.makeText(this,添加,Toast.LENGTH_LONG).show();break;case5:Toast.makeText(this,详细,Toast.LENGTH_LONG).show();break;case6:Toast.makeText(this,发送,Toast.LENGTH_LONG).show();break;case7:Toast.makeText(this,分享,Toast.LENGTH_LONG).show();break;case8:Toast.makeText(this,查找,Toast.LENGTH_LONG).show();break;case9:Toast.makeText(this,拨号,Toast.LENGTH_LONG).show();break;default:break;}returnfalse;}•重载onPrepareOptionsMenu()方法–重载onPrepareOptionsMenu()方法,能够动态的添加、删除菜单子项,或修改菜单的标题、图标和可见性等内容–onPrepareOptionsMenu()方法的返回值的含义与onCreateOptionsMenu()方法相同a)返回true则显示b)返回false则不显示publicbooleanonPrepareOptionsMenu(Menumenu){Toast.makeText(this,选项菜单显示之前onPrepareOptionsMenu方法会被调用“,Toast.LENGTH_LONG).show();returntrue;}选项菜单•子菜单–子菜单是能够显示更加详细信息的菜单子项–菜单子项使用了浮动窗体的显示形式,能够更好适应小屏幕的显示方式子菜单•创建子菜单的步骤–覆盖Activity的onCreateOptionsMenu()方法,调用Menu的addSubMenu()方法来添加子菜单–调用SubMenu的add()方法,添加子菜单–覆盖onOptionsItemSelected()方法,响应子菜单的单击事件子菜单•子菜单–Android系统的子菜单使用非常灵活,可以在选项菜单或快捷菜单中使用子菜单,有利于将相同或相似的菜单子项组织在一起,便于显示和分类–子菜单不支持嵌套–子菜单的添加是使用addSubMenu()方法实现子菜单子菜单•Menu的addSubMenu()方法与add()方法一样它有四个重载方法:–publicabstractSubMenuaddSubMenu(intgroupId,intitemId,intorder,CharSequencetitle)–publicabstractSubMenuaddSubMenu(intgroupId,intitemId,intorder,inttitleRes)–publicabstractSubMenuaddSubMenu(CharSequencetitle)–publicabstractSubMenuaddSubMenu(inttitleRes)子菜单•子菜单的实现privateTextViewtx;privatefinalstaticintGROUP1=1;privatefinalstaticintGROUP2=2;privatefinalstaticintNEW_COLOR1=Menu.FIRST;privatefinalstaticintNEW_COLOR2=NEW_COLOR1+1;privatefinalstaticintNEW_COLOR3=NEW_COLOR2+1;privatefinalstaticintNEW_HOBBY1=NEW_COLOR3+1;privatefinalstaticintNEW_HOBBY2=NEW_HOBBY1+1;privatefinalstaticintNEW_HOBBY3=NEW_HOBBY2+1;privateMenuItembg1,bg2,bg3;privateMenuItemhobby[]=newMenuItem[3];publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);tx=(TextView)findViewById(R.id.tx);}子菜单•子菜单的实现publicbooleanonCreateOptionsMenu(Menumenu){SubMenusubmenu1=menu.addSubMenu(背景颜色);submenu1.setIcon(R.drawable.q4);submenu1.setHeaderIcon(R.drawable.q4);bg1=submenu1.add(GROUP1,NEW_COLOR1,1,深粉红色);bg2=submenu1.add(GROUP1,NEW_COLOR2,2,深天蓝色);bg3=submenu1.add(GROUP1,NEW_COLOR3,3,间春绿色);bg1.setChecked(true);//设置GROUP1组是可选的、互斥的submenu1.setGroupCheckable(GROUP1,true,true);SubMenusubmenu2=menu.addSubMenu(我的爱好);hobby[0]=submenu2.add(GROUP2,NEW_HOBBY1,1,旅游);hobby[1]=submenu2.add(GROUP2,NEW_HOBBY2,2,篮球);hobby[2]=submenu2.add(GROUP2,NEW_HOBBY3,3,游泳);hobby[0].setCheckable(true);hobby[1].setCheckable(true);
本文标题:6-Android用户界面菜单
链接地址:https://www.777doc.com/doc-3869570 .html