Android仿微信菜单(Menu)(使用C#和Java分别实现)

作者:junjie 时间:2023-02-13 18:22:11 

本篇是对安卓菜单使用编程方式实现,当然可以使用XML的方式完成同样的功能,基本Java和C#写法都是一致的,所以使用XML的方式在本篇中使用Java演示,需要注意的是,对于如果不是VS开发的话,那么资源文件名称必须以小写开头,否则会报错。

运行效果
Android仿微信菜单(Menu)(使用C#和Java分别实现)

C#实现


using Android.App;
using Android.OS;
using Android.Views;
using Android.Widget;

namespace MenuDemo
{
 [Activity(Label = "@string/ApplicationName", MainLauncher = true, Icon = "@drawable/Icon")]
 public class MainActivity : Activity
 {
   protected override void OnCreate(Bundle bundle)
   {
     base.OnCreate(bundle);

SetContentView(Resource.Layout.Main);
     var iv = FindViewById<ImageView>(Resource.Id.iv);
     iv.SetImageResource(Resource.Drawable.test);
     RegisterForContextMenu(iv);
   }
   //与一个活动关联
   public override bool OnCreateOptionsMenu(IMenu menu)
   {
     base.OnCreateOptionsMenu(menu);
     const int menuItemId = Menu.First;
     const int menuItemOrder = Menu.None;
     const int munuItemText = Resource.String.menuItem1;
     /*
      * 第一个参数:组值
      * 第二个参数:菜单唯一标示
      * 第三个参数:顺序参数
      * 第四个参数:文本
      */
     menu.Add(1, menuItemId, menuItemOrder, munuItemText);
     menu.Add(2, menuItemId + 10, menuItemOrder + 1, "菜单2");
     menu.Add(2, menuItemId + 20, menuItemOrder + 2, "菜单3" );
     var subMenu = menu.AddSubMenu(0, menuItemId + 30, menuItemOrder + 3, "子菜单" );
     subMenu.SetHeaderIcon(Resource.Drawable.more);
     var subMenuItem1 = subMenu.Add(0, menuItemId + 40, menuItemOrder + 4,"子菜单-1" );
     subMenuItem1.SetIcon(Resource.Drawable.more);
     var subMenuItem2 = subMenu.Add(0, menuItemId + 50, menuItemOrder + 5,"子菜单-2" ).SetCheckable(true);
     subMenuItem2.SetIcon(Resource.Drawable.blue);
     subMenu.Add(0, menuItemId + 60, menuItemOrder + 6, "子菜单-3" ).SetCheckable(true);
     return true;
   }

public override bool OnOptionsItemSelected(IMenuItem item)
   {
     Toast.MakeText(this, "当前菜单编号" + item.ItemId, ToastLength.Long).Show();
     return base.OnOptionsItemSelected(item);
   }

public override void OnCreateContextMenu(IContextMenu menu, View v, IContextMenuContextMenuInfo menuInfo)
   {
     base.OnCreateContextMenu(menu, v, menuInfo);
     menu.SetHeaderTitle("上下文菜单");
     menu.SetHeaderIcon(Resource.Drawable.blue);
     menu.Add(0, Menu.First, Menu.None, "菜单1");
     menu.Add(0, Menu.First+1,Menu.None, "菜单2").SetShortcut('2','B');
     menu.Add(0, Menu.First + 2, Menu.None, "菜单3");
     var subMenu = menu.AddSubMenu("子菜单");
     subMenu.Add("子菜单选项");
   }
 }
}

Layout


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:minWidth="25px"
 android:minHeight="25px">
 <ImageView
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:id="@+id/iv" />
</LinearLayout>

运行效果

Android仿微信菜单(Menu)(使用C#和Java分别实现)

Java实现


package com.example.halower.menudemo;

import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuInflater;
import android.view.View;
import android.widget.ImageView;

public class MainActivity extends Activity {

@Override
 protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
   ImageView iv=(ImageView)findViewById(R.id.iamgeView);
   iv.setImageResource(R.drawable.test);
   registerForContextMenu(iv);
 }

@Override
 public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
   super.onCreateContextMenu(menu, v, menuInfo);
   MenuInflater inflater=new MenuInflater(this);
   inflater.inflate(R.menu.menu_main,menu);
   menu.setHeaderIcon(R.drawable.blue);
   menu.setHeaderTitle(R.string.menuTitle);
 }
}

Layout


<?xml version="1.0" encoding="utf-8"?>
<resources>

<string name="app_name">MenuDemo</string>
 <string name="action_settings">Settings</string>
 <string name="item1Name" >菜单1</string>
 <string name="item2Name" >菜单2</string>
 <string name="item3Name" >菜单3--More</string>
 <string name="item4Name" >菜单4</string>
 <string name="menuTitle">XML中解析菜单</string>
 <string name="subitem1Name">子菜单1</string>
 <string name="subitem2Name">子菜单2</string>
</resources>
标签:Android,微信菜单,C#,Java
0
投稿

猜你喜欢

  • C#实现猜数字小游戏

    2023-01-13 16:39:38
  • SpringBoot集成JmsTemplate(队列模式和主题模式)及xml和JavaConfig配置详解

    2022-01-31 05:29:10
  • Java上转型和下转型对象

    2021-07-11 13:37:47
  • Android保持屏幕常亮唤醒状态的方法

    2021-05-30 15:15:29
  • android从系统图库中取图片的实例代码

    2023-09-13 21:54:44
  • Java实现图像分割功能

    2022-04-10 22:27:15
  • C#实现的文件压缩和解压缩类

    2022-11-30 16:08:08
  • 支付宝咻一咻怎么用 Android帮你实现咻一咻

    2023-01-31 03:34:09
  • java实现数字转大写的方法

    2021-11-04 21:39:45
  • Java任意长度byte数组转换为int数组的方法

    2023-02-15 15:26:32
  • Java实现树形List与扁平List互转的示例代码

    2023-03-15 00:18:23
  • 5种方法完美解决android软键盘挡住输入框方法详解

    2021-10-31 17:31:38
  • C#定时器和随机数

    2023-10-28 15:30:34
  • C#中实现可变参数实例

    2022-03-27 15:48:07
  • Android实现签名涂鸦手写板

    2022-07-27 04:10:14
  • 解决Springboot项目启动后自动创建多表关联的数据库与表的方案

    2023-11-24 01:11:27
  • C#中的char与string详解

    2023-09-13 07:07:27
  • 浅析Spring工厂的反射和配置文件

    2023-06-22 20:52:23
  • java 域对象共享数据的实现

    2022-04-26 15:22:14
  • C#使用HttpClient的正确方式你了解吗

    2023-07-04 12:12:40
  • asp之家 软件编程 m.aspxhome.com