一、导入新课
- 菜单在安卓应用程序中占有比较重要的位置。原生安卓提供了三种类型的菜单:选项菜单(OptionsMenu)、上下文菜单(ContextMenu)和子菜单(SubMenu)。有兴趣的同学可以玩一玩Navigation Drawer(导航抽屉),类似于滑动菜单。

二、新课讲解
(一)菜单概述
- 菜单在安卓应用程序中占有比较重要的位置。原生安卓提供了三种类型的菜单:选项菜单(OptionsMenu)、上下文菜单(ContextMenu)和子菜单(SubMenu)。在实际安卓项目中,往往会使用SlidingMenu(滑动菜单),但是要求我们学习如何使用第三方开源库。
1、选项菜单

2、上下文菜单
1 | registerForContextMenu(tvWelcome);
3、子菜单
1 | menu.addSubMenu(1, 1, 1, "设置红色");
(二)选项菜单案例演示
1、创建安卓应用
- 基于Empty Activity模板创建安卓应用 - OptionsMenuDemo

2、准备图片素材
- 将背景图片拷贝到drawable目录

3、字符串资源文件
- 字符串资源文件 - strings.xml

<resources>
<string name="app_name">选项菜单演示</string>
<string name="popup_options_menu">弹出选项菜单</string>
</resources>
4 、主布局资源文件
- 主布局资源文件 - activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background"
tools:context=".MainActivity">
</LinearLayout>
5、主界面类实现功能
- 主界面类 - MainActivity

- 声明菜单标识常量

- 创建选项菜单

- 创建菜单项选择事件方法

- 查看完整代码
package net.hw.optionsmenu;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;
import android.widget.Toolbar;
public class MainActivity extends AppCompatActivity {
private static final int NEW_FILE_MENU = 1;
private static final int OPEN_FILE_MENU = 2;
private static final int SAVE_FILE_MENU = 3;
private static final int EXIT_APP_MENU = 4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(1, NEW_FILE_MENU, 1, "新建文件");
menu.add(1, OPEN_FILE_MENU, 2, "打开文件");
menu.add(1, SAVE_FILE_MENU, 3, "保存文件");
menu.add(1, EXIT_APP_MENU, 4, "退出应用");
return true;
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case NEW_FILE_MENU:
Toast.makeText(this, "你单击了【新建文件】菜单项~", Toast.LENGTH_SHORT).show();
break;
case OPEN_FILE_MENU:
Toast.makeText(this, "你单击了【打开文件】菜单项~", Toast.LENGTH_SHORT).show();
break;
case SAVE_FILE_MENU:
Toast.makeText(this, "你单击了【保存文件】菜单项~", Toast.LENGTH_SHORT).show();
break;
case EXIT_APP_MENU:
finish();
break;
}
return true;
}
}
6、启动应用,查看效果
- 单击活动栏右边的三点按钮,弹出选项菜单

(三)上下文菜单案例演示
1、创建安卓应用
- 基于Empty Activity模板创建安卓应用 - ContextMenuDemo

2、准备图片素材
- 将图片素材拷贝到drawable目录

3、字符串资源文件
- 字符串资源文件 - strings.xml

<resources>
<string name="app_name">上下菜单演示</string>
<string name="file">文件