二.实现Menu按键的功能


1.复写onCreateOptionsMenu方法

@Override
      public boolean onCreateOptionsMenu(Menu menu) {
           // TODOAuto-generated method stub
           //使用menu的add方法添加两个按钮
           //add(groupId, itemId, order, title)
           //第一个参数是按钮所在的组
           //第二个参数是按钮的ID号
           //第三个参数是按钮的排序id
           //第四个参数是按钮所显示的字符
           menu.add(0,0, 0, "退出");
           menu.add(1,1,1,"关于");
           return super.onCreateOptionsMenu(menu);
}



2.复写onOptionsItemSelected方法,给按钮绑定事件

@Override
      public boolean onOptionsItemSelected(MenuItem item) {
           // TODOAuto-generated method stub
           //判断点击的哪个按钮。使用按钮的id号来判断
	  //这个按钮id是add(groupId, itemId, order, title)方法中的第二个参数
           if(item.getItemId() == 0)
           {
            myOneLable.setText("退出");
           }
          
           if (item.getItemId() == 1) {
                 myOneLable.setText("关于");
           }
           return super.onOptionsItemSelected(item);
      }


    

实现屏幕菜单功能,可以考虑以下步骤: 1. 创建菜单项:定义每个菜单项的名称和对应的操作。 2. 显示菜单:将所有菜单项显示在屏幕上供用户选择。 3. 用户选择:等待用户选择菜单项,并根据用户的选择执行相应的操作。 4. 返回菜单:执行完操作后,返回菜单供用户继续选择。 以下是一个简单的示例程序,演示如何在19264屏幕上实现菜单功能: ```c #include <U8glib.h> #define MENU_ITEMS 3 #define MENU_WIDTH 64 #define MENU_HEIGHT 16 U8GLIB_ST7920_192X64_1X u8g(10, 9, 8); // 定义菜单项 const char* menuItems[MENU_ITEMS] = {"Item 1", "Item 2", "Item 3"}; // 当前选择的菜单项 int selectedMenuItem = 0; void drawMenu() { u8g.firstPage(); do { // 显示菜单项 for (int i = 0; i < MENU_ITEMS; i++) { u8g.drawStr(0, MENU_HEIGHT * (i + 1), menuItems[i]); } // 显示选中项的箭头 u8g.drawTriangle(MENU_WIDTH - 10, MENU_HEIGHT * (selectedMenuItem + 1) + 4, MENU_WIDTH - 4, MENU_HEIGHT * (selectedMenuItem + 1) + 4, MENU_WIDTH - 7, MENU_HEIGHT * (selectedMenuItem + 1) + 10); } while (u8g.nextPage()); } void setup() { u8g.begin(); } void loop() { drawMenu(); // 等待用户选择 while (true) { if (digitalRead(2) == LOW) { // 按钮被按下 selectedMenuItem = (selectedMenuItem + 1) % MENU_ITEMS; delay(100); // 延时处理按键抖动 break; } } // 执行菜单项操作 switch (selectedMenuItem) { case 0: // 执行 Item 1 操作 break; case 1: // 执行 Item 2 操作 break; case 2: // 执行 Item 3 操作 break; } } ``` 在上述示例程序中,我们首先定义了三个菜单项,然后在 `drawMenu` 函数中将它们显示在屏幕上。该函数使用 `U8GLIB_ST7920_192X64_1X` 类库提供的 `drawStr` 函数绘制字符串,以及 `drawTriangle` 函数绘制选中项的箭头。在 `loop` 函数中,我们等待用户选择菜单项,并根据用户的选择执行相应的操作。在示例程序中,我们通过一个按钮来模拟用户的选择。当按钮被按下时,我们切换选中项,并在 `switch` 语句中执行相应的操作。 需要注意的是,示例程序中只考虑了单选菜单,如果需要实现多选或级联菜单,需要对程序进行适当修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值