`
从此醉
  • 浏览: 1046386 次
  • 性别: Icon_minigender_1
  • 来自: US
社区版块
存档分类
最新评论

Android布局类型资源(三)---menu

 
阅读更多

Android中的资源是指非代码部分,如图片、音频、视频、字符等资源。一般我们都是在assets中保存原生的文件,如:MP3文件,Android程序不能直接访问,必须通过AssetManager类以二进制流的形式读取。布局类型文件一般都放在res文件夹下,如:anim,drawable,layout,values,xml,raw,menu等等,这些资源都可以通过R资源类直接访问。assets中的资源很少用到,res中的资源经常用到。

下面我们继续讲解如何使用这些典型布局类型文件:

七、使用菜单(menu)资源:任何视图组件的创建方式都有两种:一种是通过布局文件中声明创建;另一种通过在代码中的创建,菜单也是如此。

Android中的菜单分为选项菜单、上下文菜单和子菜单,都可以在XML文件中声明定义,在代码中通过MenuInflater类使用。

1)典型菜单资源文件结构:

<menu>根元素,在<menu>根元素里面会嵌套<item>、<group>子元素,<item>元素总也可以嵌套<menu>形成子菜单。

2)<menu>根元素没有属性,它包含<item>、<group>子元素

3)<group>表示一个菜单组,相同的菜单可以一起设置其属性,例如visable,enable和checkable等。属性如下:

id:唯一标志该菜单组的引用id。

menuCategory:对菜单进行分类,定义菜单的优先级,有效值为container,system,secondary和alternative。

orderInCategory:一个分类排序整数。

checkableBehavior:选择行为,单选、多选还是其他,有效值为none,all,single。

visable:是否可见,true或者false。

enabled:是否可用,true或者false。

4)<item>表示菜单项,包含在<menu>或<group>中的有效属性。<item>元素的属性如下:

id:唯一标志该菜单组的引用id。

menuCategory:菜单分类。

orderInCategory:一个分类排序整数。

title:菜单标题字符串。

titleCondensed:浓缩标题,适合标题太长的时候使用。

icon:菜单的图标。

alphabeticShortcut:字符快捷键。

numberShortcut:数字快捷键。

checkable:是否可选。

checked:是否已经备选。

visable:是否可见。

enabled:是否可用。

案例一:通过menu.xml创建菜单

1)、menu.xml文件:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:icon="@drawable/ic_launcher"
        android:title="File">
    <menu>
       <group 
           android:id="@+id/noncheckable_group"
           android:checkableBehavior="none">
           <item
               android:id="@+id/newFile"
               android:title="New"
               android:alphabeticShortcut="n">
           </item>
           <item
               android:id="@+id/openFile"
               android:title="Open"
               android:alphabeticShortcut="o">
           </item>
           <item
               android:id="@+id/saveFile"
               android:title="Save"
               android:alphabeticShortcut="s">
           </item>
       </group>
    </menu>    
    </item>
    <item 
        android:title="Edit"
        android:icon="@drawable/ic_launcher">
    <menu>
       <group 
           android:id="@+id/edit_group"
           android:checkableBehavior="single">
           <item
               android:id="@+id/cut"
               android:title="Cut">
           </item>
           <item
               android:id="@+id/past"
               android:title="Past">
           </item>
       </group>
    </menu>
</item>
<item 
   android:title="Help"
   android:icon="@drawable/ic_launcher">
    <menu>
       <group android:id="@+id/help_group">
           <item android:id="@+id/about"
               android:title="About">
           </item>
           <item android:id="@+id/exit"
               android:title="Exit">
           </item>
       </group>
    </menu>
    </item>
</menu>


test_menu.java文件:

public class Test_Menu extends Activity{

private MenuInflater mi;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test_menu);
mi = new MenuInflater(this);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
mi.inflate(R.menu.menu, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case R.id.about:
aboutAlert("本实例演示的是如何使用Xml菜单资源来定义菜单!");
break;
case R.id.exit:
exitAlert("真的要退出吗?");
break;
}
return super.onOptionsItemSelected(item);
}

private void exitAlert(String msg){
//实例化AlertDialog.Builder
AlertDialog.Builder  builder = new AlertDialog.Builder(this);
//设置显示信息
builder.setMessage(msg)
.setCancelable(false)
//确定按钮
.setPositiveButton("确定", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// 结束Activity
finish();
}
//取消按钮
}).setNegativeButton("取消", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
return;
}
});
//创建对话框
AlertDialog alert = builder.create();
//显示对话框
alert.show();
}

private void aboutAlert(String msg){
//实例化AlertDialog.Builder
AlertDialog.Builder  builder = new AlertDialog.Builder(this);
//设置显示信息
builder.setMessage(msg)
.setCancelable(false)
//确定按钮
.setPositiveButton("确定", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
}
});
//创建对话框
AlertDialog alert = builder.create();
//显示对话框
alert.show();
}
}


案例二:直接在Activity类中创建菜单:

public class Option_Menu extends Activity {

//菜单项ID常量
private static final int Item_Start = Menu.FIRST;
private static final int Item_Exit = Menu.FIRST+1;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.option_menu);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, Item_Start, 0, "开始");
menu.add(0, Item_Exit, 0, "退出");
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
//菜单项1被选择
case Item_Start:
//这只Activity标题
setTitle("开始游戏");
break;
//菜单项1被选择
case Item_Exit:
setTitle("退出!");
break;
}
return true;
}
}


出处:http://blog.csdn.net/cl05300629/article/details/17717573 作者:伫望碧落
分享到:
评论

相关推荐

    黑马程序员 安卓学院 万元哥项目经理 分享220个代码实例

    |--android 资源uri |--android 还原短信 |--android 重启 |--android中anim文件特效 |--app信息menifest获取(如版本号) |--AsyncQueryHandler之异步查询Cursor处理 |--AutoCompleteTextView自动提示的用法 |--...

    老罗android开发视频教程全集百度网盘下载

    Android进阶初级:组件Widget/ 菜单Menu/ 布局Layout 详解 Xml解析(Pull/Dom/Sax)/JNI 解析SQL数据库原理, SQLit e /SharedPreferences/File详解 多媒体Audio/Video/Camera 详解 Android进阶高级:蓝牙/WIFI SMS/...

    android开发资料大全

    实用Android开发工具和资源精选 APK权限大全 - Android必懂知识 最无私的Android资料(书籍+代码)分享[总结] Android中文帮助教程(非常合适新手入门) android程序编写及调试新手入门 大家一起学Android(Windows...

    【android编程】 第六讲-Android菜单布局及使用

    :定义一个Menu,是一个菜单资源文件的根节点,里面可以包含一个或者多个和元素。 :创建一个MenuItem,代表了菜单中一个选项。 :对菜单项进行分组,可以以组的形式操作菜单项。 元素除了常规的id、icon、title...

    Android编程入门很简单.(清华出版.王勇).part1

    5.1认识Android视图、Widget以及布局 5.2必须了解的Widget组件 5.2.1 使用可滚动的文本控件——TextView 5.2.2 TextView中的一些功能 5.2.3 使用可滚动的视图——ScrollView 5.2.4文字的编辑 5.2.5 使用按钮——...

    老罗android视频开发源码和ppt经典

    13.3 Android菜单Menu介绍三 13.4 Android菜单Menu介绍四 十四、LoaderManager异步加载数据库 14.1 LoaderManager的使用一 14.2 LoaderManager的使用二 十五、多线程编程 15.1 AsyncTask异步任务介绍一 15.2 ...

    疯狂Android讲义(第2版)源代码 第6章~第9章

    6.1、资源的类型及存储方式: 6.2、使用字符串、颜色、尺寸资源: 6.3、数组资源: 6.4、使用Drawable资源:图片资源; StateListDrawable资源; LayerDrawable资源; ShapeDrawable资源; ClipDrawable资源; ...

    Android代码-类似iOS中弹框气泡菜单的控件

    PopupMenuView 此库主要实现了一个类似iOS中的...PopupMenuView可以通过menu布局文件加载出预先准备的菜单: // 根据menu资源文件创建 PopupMenuView menuView = new PopupMenuView(this, R.menu.menu_pop, new Me

    Android编程入门很简单.(清华出版.王勇).part2

    5.1认识Android视图、Widget以及布局 5.2必须了解的Widget组件 5.2.1 使用可滚动的文本控件——TextView 5.2.2 TextView中的一些功能 5.2.3 使用可滚动的视图——ScrollView 5.2.4文字的编辑 5.2.5 使用按钮——...

    疯狂Android讲义源码

     6.7 使用菜单(Menu)资源 239  6.7.1 定义菜单资源 239  6.7.2 使用菜单资源 240  6.8 样式(Style)和主题(Theme)  资源 243  6.8.1 样式资源 243  6.8.2 主题资源 245  6.9 属性(Attribute)资源 247...

    Android入门到精通源代码.

    1.4 Android网上资源 第2章 搭建Android开发环境 2.1 Android开发环境要求 2.2 JDK的安装和配置 2.2.1 安装JDK 2.2.2 配置JDK 2.3 Android SDK的下载和安装 2.3.1 下载Android SDK 2.3.2 安装Android SDK 2.3.3 创建...

    Android插件

    根据布局文件快速生成对应的Activity,Fragment,Adapter,Menu。 4.Android Parcelable code generator JavaBean序列化,快速实现Parcelable接口。 5.Android Methods Count 显示依赖库中得方法数 6....

    java8源码-Android-Studio-Plugins:Android-Studio-插件

    在Activity,Fragment,Adapter中选中布局xml的资源id自动生成butterknife注解。 使用方法:Ctrl+Shift+B选择图上所示选项 3. 根据布局文件快速生成对应的Activity,Fragment,Adapter,Menu。 4. JavaBean序列化,...

    java8源码-Android-Studio-Plugins:AndroidStudio插件

    在Activity,Fragment,Adapter中选中布局xml的资源id自动生成butterknife注解。 使用方法:Ctrl+Shift+B选择图上所示选项 3. 根据布局文件快速生成对应的Activity,Fragment,Adapter,Menu。 4. JavaBean序列化,...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    Google Android SDK开发范例大全(完整版)共4个分卷 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    Google Android SDK开发范例大全(完整版)共4个分卷 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    Google Android SDK开发范例大全(完整版)共4个分卷 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1...

Global site tag (gtag.js) - Google Analytics