自定义菜单_自定义菜单怎么关闭 - CSDN
精华内容
参与话题
  • 微信公众平台服务号可申请自定义菜单了,其它的号暂时不支持自定义菜单了,这个不但可以使用api来操作,还可以直接在后台定义菜单与参数哦。 申请自定义菜单 服务号可以申请自定义菜单,使用QQ登录的公众号...
  • 与菜单相关的类一共有3个 ContextMenu类 ContextMenuBuiltInItems类 //与系统内置菜单相关的类 ContextMenuItem类 //与用户自定义菜单相关的类 一不小心,就会被这几个类搞昏头。 举一例,学习之: flashcs3 新建一...
    与菜单相关的类一共有3个
    ContextMenu类
    ContextMenuBuiltInItems类
    //与系统内置菜单相关的类
    ContextMenuItem类 //与用户自定义菜单相关的类
    一不小心,就会被这几个类搞昏头。
    举一例,学习之:
    flashcs3 新建一个元件,随便画个什么图形。
    吧元件拖动到舞台上,名称改为mc
    然后复制下面的代码到主时间轴第一桢:
    var cm:ContextMenu=new ContextMenu();
    //定义CM对象,赋值给可视元件.
    //而后的代码中,会对cm的属性进行修改。达到自定义的效果
    //那么就会分别对●内置菜单 ●用户菜单 进行修改 
    mc.contextMenu=cm;
    //当然你也可以赋值给舞台。如下语句
    //contextMenu=cm;
    /编辑内置菜单
    cm.hideBuiltInItems();
    /*//也可以用下面方法,选择性隐藏内置菜单
    var cmb:ContextMenuBuiltInItems=new ContextMenuBuiltInItems();
    cmb.print=false;
    cmb.quality=false;
    cmb.zoom=false;
    cmb.loop=false;
    cm.builtInItems=cmb; // builtInItems属性是一个ContextMenuBuiltInItems值,
    // 需要先修改ContextMenuBuiltInItems的值,然后赋值给cm.builtInItems
    // 属性,才能对内置菜单进行修改。
    */


    编辑用户菜单
    var cm1:ContextMenuItem=new ContextMenuItem("菜单1",false,true,true)
    var cm2:ContextMenuItem=new ContextMenuItem("菜单2",false,true,true)
    var cm3:ContextMenuItem=new ContextMenuItem("菜单3",false,false,true)
    cm.customItems.push(cm1); // 标题名字,分割线,可用,可见
    cm.customItems.push(cm2);
    cm.customItems.push(cm3);
    注意自定义菜单是可以在运行中动态修改的。看个人发挥了

    //侦听事件函数
    //注意侦听的对象是ContextMenuItem,
    //在下面依次对cm1,cm2,cm3,三个ContextMenuItem对象添加侦听。
    cm1.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,clickMenu)
    cm2.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,clickMenu)
    cm3.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,clickMenu)
    function clickMenu(e:ContextMenuEvent){
    trace(e.bubbles) //false,是否冒泡
    trace(e.cancelable) //false,是否能取消
    trace(e.contextMenuOwner)//[object MovieClip],所属的对象
    trace(e.currentTarget)//[object ContextMenuItem],
    trace(e.mouseTarget)//[object MovieClip],用户右键单击以显示上下文菜单的显示列表对象。
    trace(e.target)//[object ContextMenuItem]
    trace(e.target.caption)//菜单1,可以从这里来判断,后续操作或者应该执行的函 数。
    trace(e.currentTarget.caption)//菜单1
    }
    很好很强大,方便学习

    转载于:https://www.cnblogs.com/top5/archive/2010/02/12/1667800.html

    展开全文
  • 1.自定义菜单功能: 数据结构类型参照微信公众平台数据格式,这里不做分析: 创建相应的实体类: public class Button { //菜单类型 private String type; //菜单名称 private String name; //二级菜单 ...

    1.自定义菜单功能:

    数据结构类型参照微信公众平台数据格式,这里不做分析:

    创建相应的实体类:

    public class Button {
    //菜单类型
    private String type;
    //菜单名称
    private String name;
    //二级菜单
    private Button[] sub_button;
    public String getType() {
    return type;
    }
    public void setType(String type) {
    this.type = type;
    }
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public Button[] getSub_button() {
    return sub_button;
    }
    public void setSub_button(Button[] sub_button) {
    this.sub_button = sub_button;
    }

    }

    再创建ClickButton类

    public class ClickButton extends Button{
    //Click类型菜单key
    private String key;


    public String getKey() {
    return key;
    }


    public void setKey(String key) {
    this.key = key;
    }

    }

    再创建ViewButton类

    public class ViewButton extends Button{
    //view类型菜单url
    private String url;


    public String getUrl() {
    return url;
    }


    public void setUrl(String url) {
    this.url = url;
    }

    }

    再创建我们的菜单类:

    public class Menu {
    //一级菜单
    private Button[] button;


    public Button[] getButton() {
    return button;
    }


    public void setButton(Button[] button) {
    this.button = button;
    }

    }

    2.创建新增菜单的方法

    public static Menu initMenu(){
    Menu menu = new Menu();
    ClickButton button11 = new ClickButton();
    button11.setName("click菜单");
    button11.setType("click");
    button11.setKey("11");

    ViewButton button21 = new ViewButton();
    button21.setName("view菜单");
    button21.setType("view");
    button21.setUrl("http://www.baidu.com");//我这里测试使用百度网站

    ClickButton button31 = new ClickButton();
    button31.setName("扫码事件");
    button31.setType("scancode_push");
    button31.setKey("31");

    ClickButton button32 = new ClickButton();
    button32.setName("地理位置");
    button32.setType("location_select");
    button32.setKey("32");

    Button button = new Button();
    button.setName("菜单");
    button.setSub_button(new Button[]{button31,button32});

    menu.setButton(new Button[]{button11,button21,button});
    return menu;

    }

    新增创建菜单访问请求路径常量

    //创建菜单
    public static int createMenu(String token,String menu) throws ParseException, IOException{
    int result = 0;
    String url = CREATE_MENU_URL.replace("ACCESS_TOKEN", token);
    JSONObject jsonObject = doPostStr(url, menu);
    if(jsonObject != null){
    //正常返回0
    result = jsonObject.getInt("errcode");
    }
    return result;

    }

    测试:

    public class WeixinTest {
    public static void main(String[] args){
    try {
    AccessToken token = WenXinUntil.getAccessToken();
    /*String filePath = "‪D:/image/123.jpg";
    String mediaId = WenXinUntil.upload(filePath,token.getToken(), "thumb");
    System.out.println("票据"+token.getToken());
    System.out.println("有效时间"+token.getExpiresIn());
    System.out.println(mediaId);*/
    String menu = JSONObject.fromObject(WenXinUntil.initMenu()).toString();
    int result = WenXinUntil.createMenu(token.getToken(), menu);
    if(result == 0){
    System.out.println("创建菜单成功");
    }else{
    System.out.println("创建菜单失败");
    }
    } catch (Exception e) {
    e.printStackTrace();
    }

    }

    }

    3.运行结果:

    至此 微信自定义菜单完成!
    源码链接:链接:https://pan.baidu.com/s/11X4TjtupKeR0EIh3Xpsn2Q 
    提取码:29mo

    展开全文
  • 微信公众号平台->自定义菜单

    千次阅读 2019-05-06 11:11:00
    自定义菜单 微信公众平台自定义菜单设置方法 进入微信公众平台->功能->自定义菜单->添加菜单->点击“+”添加子菜单->设置动作->发布。 1)最多创建3个一级菜单,一级菜单名称名字不多于4个汉字或8...
        

    自定义菜单

    微信公众平台自定义菜单设置方法

    进入微信公众平台->功能->自定义菜单->添加菜单->点击“+”添加子菜单->设置动作->发布。
    1)最多创建3个一级菜单,一级菜单名称名字不多于4个汉字或8个字母。
    2)每个一级菜单下的子菜单最多可创建5个,子菜单名称名字不多于8个汉字或16个字母。
    3)在子菜单下可设置动作。
    发送信息:可发送信息类型包括文字、图片、语音、视频和图文消息等。但未认证订阅号暂时不支持文字类型。
    跳转到网页:所有公众帐号均可在自定义菜单中直接选择素材库中的图文消息作为跳转到网页的对象。认证订阅和服务号还可直接输入网址。

    温馨提示:编辑中的菜单不会马上被用户看到,点击发布后,会在24小时后在手机端同步显示,粉丝不会收到更新提示,若多次编辑,以最后一次保存为准。
    2789632-837f1b993196e029.png

       在模拟手机的界面里的显示,也就是在手机里看到的样式,除了显示出来的加号。右侧便是子菜单的自定义,以及对子菜单的删除功能。
    在自定义菜单中,主要定义的就是首次关注公众号所呈现的界面。在这个里面,一般主要就是对公众号整体的模块进行一个划分。
       所以对自己的公众号文章有一个清晰的模块划分,然后在填充到各个模块中。需要注意的是,子菜单的名称是有字数限制的,其次需要注意的排版样式。例如我现在的只有一个DotNet模块,显然是不好看的。因为文章还在整理中,所以暂且只有这么一个模块。
       该模块是基于页面模板或素材库的,如果子菜单是多篇文章,则此时用到的便是页面模板,页面模板也是将多个素材整合在一起的集合。

    总结:

    一级模块,3个
    二级模块, 5个
    页面模板分类,5个
    每个模板,最多文章30篇

    一个个人公众号最多可显示文章355*30 = 2250篇

    大的模块一定要划分好,之后可在页面模板中的分类中再做一次划分。!

    2789632-e26408b60b5a74b8.png

    2789632-0dff99fef1caf853.png
    公众号.png

    2789632-0df2a04d9f569343.jpg
    展开全文
  • 自定义菜单

    2015-10-10 18:41:13
    菜单是用户界面中最常见的元素之一,使用非常频繁,在Android中,菜单被分为如下三种,选项菜单(OptionsMenu)、上下文菜单(ContextMenu)和子菜单(SubMenu),今天这讲是OptionsMenu   一、概述  ...

    菜单是用户界面中最常见的元素之一,使用非常频繁,在Android中,菜单被分为如下三种,选项菜单(OptionsMenu)、上下文菜单(ContextMenu)和子菜单(SubMenu),今天这讲是OptionsMenu 

      一、概述

      public boolean onCreateOptionsMenu(Menu menu):使用此方法调用OptionsMenu 。

      public boolean onOptionsItemSelected(MenuItem item):选中菜单项后发生的动作。

      public void onOptionsMenuClosed(Menu menu):菜单关闭后发生的动作。

      public boolean onPrepareOptionsMenu(Menu menu):选项菜单显示之前onPrepareOptionsMenu方法会被调用,你可以用此方法来根据打当时的情况调整菜单。

      public boolean onMenuOpened(int featureId, Menu menu):单打开后发生的动作。

      二、默认样式

      默认样式是在屏幕底部弹出一个菜单,这个菜单我们就叫他选项菜单OptionsMenu,一般情况下,选项菜单最多显示2排每排3个菜单项,这些菜单项有文字有图标,也被称作Icon Menus,如果多于6项,从第六项开始会被隐藏,在第六项会出现一个More里,点击More才出现第六项以及以后的菜单项,这些菜单项也被称作Expanded Menus。下面介绍。

      

    复制代码
    <?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" >

    <TextView android:layout_width="wrap_content"
    android:layout_height
    ="wrap_content" android:text="请点击 Menu键显示选项菜单"
    android:id
    ="@+id/TextView02" />

    </LinearLayout>
    复制代码

      2。重载onCreateOptionsMenu(Menu menu)方法

      重载onCreateOptionsMenu(Menu menu)方法,并在此方法中添加菜单项,最后返回true,如果false,菜单则不会显示。

      

    复制代码
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    /*
    *
    * add()方法的四个参数,依次是:
    *
    * 1、组别,如果不分组的话就写Menu.NONE,
    *
    * 2、Id,这个很重要,Android根据这个Id来确定不同的菜单
    *
    * 3、顺序,那个菜单现在在前面由这个参数的大小决定
    *
    * 4、文本,菜单的显示文本
    */

    menu.add(Menu.NONE, Menu.FIRST
    + 1, 5, "删除").setIcon(

    android.R.drawable.ic_menu_delete);

    // setIcon()方法为菜单设置图标,这里使用的是系统自带的图标,同学们留意一下,以

    // android.R开头的资源是系统提供的,我们自己提供的资源是以R开头的

    menu.add(Menu.NONE, Menu.FIRST
    + 2, 2, "保存").setIcon(

    android.R.drawable.ic_menu_edit);

    menu.add(Menu.NONE, Menu.FIRST
    + 3, 6, "帮助").setIcon(

    android.R.drawable.ic_menu_help);

    menu.add(Menu.NONE, Menu.FIRST
    + 4, 1, "添加").setIcon(

    android.R.drawable.ic_menu_add);

    menu.add(Menu.NONE, Menu.FIRST
    + 5, 4, "详细").setIcon(

    android.R.drawable.ic_menu_info_details);

    menu.add(Menu.NONE, Menu.FIRST
    + 6, 3, "发送").setIcon(

    android.R.drawable.ic_menu_send);

    return true;

    }
    复制代码

      3。为菜单项注册事件

      使用onOptionsItemSelected(MenuItem item)方法为菜单项注册事件

    复制代码
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {

    case Menu.FIRST + 1:

    Toast.makeText(
    this, "删除菜单被点击了", Toast.LENGTH_LONG).show();

    break;

    case Menu.FIRST + 2:

    Toast.makeText(
    this, "保存菜单被点击了", Toast.LENGTH_LONG).show();

    break;

    case Menu.FIRST + 3:

    Toast.makeText(
    this, "帮助菜单被点击了", Toast.LENGTH_LONG).show();

    break;

    case Menu.FIRST + 4:

    Toast.makeText(
    this, "添加菜单被点击了", Toast.LENGTH_LONG).show();

    break;

    case Menu.FIRST + 5:

    Toast.makeText(
    this, "详细菜单被点击了", Toast.LENGTH_LONG).show();

    break;

    case Menu.FIRST + 6:

    Toast.makeText(
    this, "发送菜单被点击了", Toast.LENGTH_LONG).show();

    break;

    }

    return false;

    }
    复制代码

      4。其他按需要重载

      完整代码

    复制代码
    package com.wjq.menu;

    import android.app.Activity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.Toast;

    public class DefaultMenu extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    /*
    *
    * add()方法的四个参数,依次是:
    *
    * 1、组别,如果不分组的话就写Menu.NONE,
    *
    * 2、Id,这个很重要,Android根据这个Id来确定不同的菜单
    *
    * 3、顺序,那个菜单现在在前面由这个参数的大小决定
    *
    * 4、文本,菜单的显示文本
    */

    menu.add(Menu.NONE, Menu.FIRST
    + 1, 5, "删除").setIcon(

    android.R.drawable.ic_menu_delete);

    // setIcon()方法为菜单设置图标,这里使用的是系统自带的图标,同学们留意一下,以

    // android.R开头的资源是系统提供的,我们自己提供的资源是以R开头的

    menu.add(Menu.NONE, Menu.FIRST
    + 2, 2, "保存").setIcon(

    android.R.drawable.ic_menu_edit);

    menu.add(Menu.NONE, Menu.FIRST
    + 3, 6, "帮助").setIcon(

    android.R.drawable.ic_menu_help);

    menu.add(Menu.NONE, Menu.FIRST
    + 4, 1, "添加").setIcon(

    android.R.drawable.ic_menu_add);

    menu.add(Menu.NONE, Menu.FIRST
    + 5, 4, "详细").setIcon(

    android.R.drawable.ic_menu_info_details);

    menu.add(Menu.NONE, Menu.FIRST
    + 6, 3, "发送").setIcon(

    android.R.drawable.ic_menu_send);

    return true;

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {

    case Menu.FIRST + 1:

    Toast.makeText(
    this, "删除菜单被点击了", Toast.LENGTH_LONG).show();

    break;

    case Menu.FIRST + 2:

    Toast.makeText(
    this, "保存菜单被点击了", Toast.LENGTH_LONG).show();

    break;

    case Menu.FIRST + 3:

    Toast.makeText(
    this, "帮助菜单被点击了", Toast.LENGTH_LONG).show();

    break;

    case Menu.FIRST + 4:

    Toast.makeText(
    this, "添加菜单被点击了", Toast.LENGTH_LONG).show();

    break;

    case Menu.FIRST + 5:

    Toast.makeText(
    this, "详细菜单被点击了", Toast.LENGTH_LONG).show();

    break;

    case Menu.FIRST + 6:

    Toast.makeText(
    this, "发送菜单被点击了", Toast.LENGTH_LONG).show();

    break;

    }

    return false;

    }

    @Override
    public void onOptionsMenuClosed(Menu menu) {
    Toast.makeText(
    this, "选项菜单关闭了", Toast.LENGTH_LONG).show();
    }

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
    Toast.makeText(
    this,
    "选项菜单显示之前onPrepareOptionsMenu方法会被调用,你可以用此方法来根据打当时的情况调整菜单",
    Toast.LENGTH_LONG).show();

    // 如果返回false,此方法就把用户点击menu的动作给消费了,onCreateOptionsMenu方法将不会被调用

    return true;

    }
    }
    复制代码

    5.效果浏览

      

      三、自定义样式

      

    复制代码
    <?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"
    >
    <GridView
    android:id
    ="@+id/gridview"
    android:layout_width
    ="fill_parent"
    android:layout_height
    ="fill_parent"
    android:numColumns
    ="4"
    android:verticalSpacing
    ="10dip"
    android:horizontalSpacing
    ="10dip"
    android:stretchMode
    ="columnWidth"
    android:gravity
    ="center"
    />

    </LinearLayout>
    复制代码

       首先自定义菜单界面,我是GridView来包含菜单项,4列3行

      

    复制代码
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id
    ="@+id/RelativeLayout_Item"
    android:layout_width
    ="fill_parent" android:layout_height="wrap_content"
    android:paddingBottom
    ="5dip">
    <ImageView android:id="@+id/item_image"
    android:layout_centerHorizontal
    ="true" android:layout_width="wrap_content"
    android:layout_height
    ="wrap_content"></ImageView>
    <TextView android:layout_below="@id/item_image" android:id="@+id/item_text"
    android:layout_centerHorizontal
    ="true" android:layout_width="wrap_content"
    android:layout_height
    ="wrap_content" android:text="选项"></TextView>
    </RelativeLayout>
    复制代码

    菜单项的现实样式,一个图标和一个文字。

      3.定义

      

    复制代码
    private boolean isMore = false;// menu菜单翻页控制
    AlertDialog menuDialog;// menu菜单Dialog
    GridView menuGrid;
    View menuView;

    private final int ITEM_SEARCH = 0;// 搜索
    private final int ITEM_FILE_MANAGER = 1;// 文件管理
    private final int ITEM_DOWN_MANAGER = 2;// 下载管理
    private final int ITEM_FULLSCREEN = 3;// 全屏
    private final int ITEM_MORE = 11;// 菜单


    /** 菜单图片 **/
    int[] menu_image_array = { R.drawable.menu_search,
    R.drawable.menu_filemanager, R.drawable.menu_downmanager,
    R.drawable.menu_fullscreen, R.drawable.menu_inputurl,
    R.drawable.menu_bookmark, R.drawable.menu_bookmark_sync_import,
    R.drawable.menu_sharepage, R.drawable.menu_quit,
    R.drawable.menu_nightmode, R.drawable.menu_refresh,
    R.drawable.menu_more };
    /** 菜单文字 **/
    String[] menu_name_array
    = { "搜索", "文件管理", "下载管理", "全屏", "网址", "书签",
    "加入书签", "分享页面", "退出", "夜间模式", "刷新", "更多" };
    /** 菜单图片2 **/
    int[] menu_image_array2 = { R.drawable.menu_auto_landscape,
    R.drawable.menu_penselectmodel, R.drawable.menu_page_attr,
    R.drawable.menu_novel_mode, R.drawable.menu_page_updown,
    R.drawable.menu_checkupdate, R.drawable.menu_checknet,
    R.drawable.menu_refreshtimer, R.drawable.menu_syssettings,
    R.drawable.menu_help, R.drawable.menu_about, R.drawable.menu_return };
    /** 菜单文字2 **/
    String[] menu_name_array2
    = { "自动横屏", "笔选模式", "阅读模式", "浏览模式", "快捷翻页",
    "检查更新", "检查网络", "定时刷新", "设置", "帮助", "关于", "返回" };
    复制代码
    复制代码
    @Override
    public boolean onMenuOpened(int featureId, Menu menu) {
    if (menuDialog == null) {
    menuDialog
    = new AlertDialog.Builder(this).setView(menuView).show();
    }
    else {
    menuDialog.show();
    }
    return false;// 返回为true 则显示系统menu
    }
    复制代码

    如果第一次打开则设置视图,否则直接显示menuDialog视图。

      

    复制代码
    private SimpleAdapter getMenuAdapter(String[] menuNameArray,
    int[] imageResourceArray) {
    ArrayList
    <HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
    for (int i = 0; i < menuNameArray.length; i++) {
    HashMap
    <String, Object> map = new HashMap<String, Object>();
    map.put(
    "itemImage", imageResourceArray[i]);
    map.put(
    "itemText", menuNameArray[i]);
    data.add(map);
    }
    SimpleAdapter simperAdapter
    = new SimpleAdapter(this, data,
    R.layout.item_menu,
    new String[] { "itemImage", "itemText" },
    new int[] { R.id.item_image, R.id.item_text });
    return simperAdapter;
    }
    复制代码

    为菜单添加菜单项。

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    menu.add(
    "menu");// 必须创建一项
    return super.onCreateOptionsMenu(menu);
    }
    复制代码
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    menuView
    = View.inflate(this, R.layout.gridview_menu, null);
    // 创建AlertDialog
    menuDialog = new AlertDialog.Builder(this).create();
    menuDialog.setView(menuView);
    menuDialog.setOnKeyListener(
    new OnKeyListener() {
    public boolean onKey(DialogInterface dialog, int keyCode,
    KeyEvent
    event) {
    if (keyCode == KeyEvent.KEYCODE_MENU)// 监听按键
    dialog.dismiss();
    return false;
    }
    });

    menuGrid
    = (GridView) menuView.findViewById(R.id.gridview);
    menuGrid.setAdapter(getMenuAdapter(menu_name_array, menu_image_array));
    /** 监听menu选项 **/
    menuGrid.setOnItemClickListener(
    new OnItemClickListener() {
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
    long arg3) {
    switch (arg2) {
    case ITEM_SEARCH:// 搜索

    break;
    case ITEM_FILE_MANAGER:// 文件管理

    break;
    case ITEM_DOWN_MANAGER:// 下载管理

    break;
    case ITEM_FULLSCREEN:// 全屏

    break;
    case ITEM_MORE:// 翻页
    if (isMore) {
    menuGrid.setAdapter(getMenuAdapter(menu_name_array2,
    menu_image_array2));
    isMore
    = false;
    }
    else {// 首页
    menuGrid.setAdapter(getMenuAdapter(menu_name_array,
    menu_image_array));
    isMore
    = true;
    }
    menuGrid.invalidate();
    // 更新menu
    menuGrid.setSelection(ITEM_MORE);
    break;
    }


    }
    });
    }
    复制代码
    复制代码
    package com.wjq.menu;


    import java.util.ArrayList;
    import java.util.HashMap;

    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.DialogInterface;
    import android.content.DialogInterface.OnKeyListener;
    import android.os.Bundle;
    import android.view.KeyEvent;
    import android.view.Menu;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.GridView;
    import android.widget.SimpleAdapter;
    import android.widget.AdapterView.OnItemClickListener;

    public class CustomizeMenu extends Activity {

    private boolean isMore = false;// menu菜单翻页控制
    AlertDialog menuDialog;// menu菜单Dialog
    GridView menuGrid;
    View menuView;

    private final int ITEM_SEARCH = 0;// 搜索
    private final int ITEM_FILE_MANAGER = 1;// 文件管理
    private final int ITEM_DOWN_MANAGER = 2;// 下载管理
    private final int ITEM_FULLSCREEN = 3;// 全屏
    private final int ITEM_MORE = 11;// 菜单


    /** 菜单图片 **/
    int[] menu_image_array = { R.drawable.menu_search,
    R.drawable.menu_filemanager, R.drawable.menu_downmanager,
    R.drawable.menu_fullscreen, R.drawable.menu_inputurl,
    R.drawable.menu_bookmark, R.drawable.menu_bookmark_sync_import,
    R.drawable.menu_sharepage, R.drawable.menu_quit,
    R.drawable.menu_nightmode, R.drawable.menu_refresh,
    R.drawable.menu_more };
    /** 菜单文字 **/
    String[] menu_name_array
    = { "搜索", "文件管理", "下载管理", "全屏", "网址", "书签",
    "加入书签", "分享页面", "退出", "夜间模式", "刷新", "更多" };
    /** 菜单图片2 **/
    int[] menu_image_array2 = { R.drawable.menu_auto_landscape,
    R.drawable.menu_penselectmodel, R.drawable.menu_page_attr,
    R.drawable.menu_novel_mode, R.drawable.menu_page_updown,
    R.drawable.menu_checkupdate, R.drawable.menu_checknet,
    R.drawable.menu_refreshtimer, R.drawable.menu_syssettings,
    R.drawable.menu_help, R.drawable.menu_about, R.drawable.menu_return };
    /** 菜单文字2 **/
    String[] menu_name_array2
    = { "自动横屏", "笔选模式", "阅读模式", "浏览模式", "快捷翻页",
    "检查更新", "检查网络", "定时刷新", "设置", "帮助", "关于", "返回" };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    menuView
    = View.inflate(this, R.layout.gridview_menu, null);
    // 创建AlertDialog
    menuDialog = new AlertDialog.Builder(this).create();
    menuDialog.setView(menuView);
    menuDialog.setOnKeyListener(
    new OnKeyListener() {
    public boolean onKey(DialogInterface dialog, int keyCode,
    KeyEvent
    event) {
    if (keyCode == KeyEvent.KEYCODE_MENU)// 监听按键
    dialog.dismiss();
    return false;
    }
    });

    menuGrid
    = (GridView) menuView.findViewById(R.id.gridview);
    menuGrid.setAdapter(getMenuAdapter(menu_name_array, menu_image_array));
    /** 监听menu选项 **/
    menuGrid.setOnItemClickListener(
    new OnItemClickListener() {
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
    long arg3) {
    switch (arg2) {
    case ITEM_SEARCH:// 搜索

    break;
    case ITEM_FILE_MANAGER:// 文件管理

    break;
    case ITEM_DOWN_MANAGER:// 下载管理

    break;
    case ITEM_FULLSCREEN:// 全屏

    break;
    case ITEM_MORE:// 翻页
    if (isMore) {
    menuGrid.setAdapter(getMenuAdapter(menu_name_array2,
    menu_image_array2));
    isMore
    = false;
    }
    else {// 首页
    menuGrid.setAdapter(getMenuAdapter(menu_name_array,
    menu_image_array));
    isMore
    = true;
    }
    menuGrid.invalidate();
    // 更新menu
    menuGrid.setSelection(ITEM_MORE);
    break;
    }


    }
    });
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    menu.add(
    "menu");// 必须创建一项
    return super.onCreateOptionsMenu(menu);
    }

    private SimpleAdapter getMenuAdapter(String[] menuNameArray,
    int[] imageResourceArray) {
    ArrayList
    <HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
    for (int i = 0; i < menuNameArray.length; i++) {
    HashMap
    <String, Object> map = new HashMap<String, Object>();
    map.put(
    "itemImage", imageResourceArray[i]);
    map.put(
    "itemText", menuNameArray[i]);
    data.add(map);
    }
    SimpleAdapter simperAdapter
    = new SimpleAdapter(this, data,
    R.layout.item_menu,
    new String[] { "itemImage", "itemText" },
    new int[] { R.id.item_image, R.id.item_text });
    return simperAdapter;
    }
    @Override
    public boolean onMenuOpened(int featureId, Menu menu) {
    if (menuDialog == null) {
    menuDialog
    = new AlertDialog.Builder(this).setView(menuView).show();
    }
    else {
    menuDialog.show();
    }
    return false;// 返回为true 则显示系统menu
    }

    }
    复制代码

    原代码下载点击这里

    效果浏览

              

    展开全文
  • Windows自定义右键菜单

    万次阅读 2018-08-31 17:47:42
    今天我要分享的是如何通过添加注册表来达到创建自定义菜单的目的。  在XP系统上通过注册表添加自定义菜单,只能创建一级菜单而且不能给菜单添加图标。WIN7及之后的系统支持注册表添加多级菜单并且可以添加菜单图标...
  • 在上篇文章实现微信扫码获取带指定参数时,微信公众号后台启用了服务器配置,导致之前设置好的微信自定义菜单失效。 开启了服务器配置,就无法用之前的方式在微信公众平台配置自定义菜单 此时,我们要通过接口来...
  • 如果想同时启用服务器配置与自定义菜单,可以这样做: 需要修改菜单的时候 本文结合百度知道@secretid 用户的回答和我的实践,转载需要标明。 1、禁用服务器配置 2、再修改菜单 3、再启用服务器配置 4、点击...
  • 微信公众平台公众帐号及服务号可以在会话界面底部按需设置自定义菜单;且可为自定义菜单设置响应动作,可以通过点击菜单,收到你指定的消息或跳转到指定的网页。但是有些特殊情况我们的自定义菜单无法使用也无法更改...
  • 微信公众号完成了自定义菜单怎么点击菜单推送消息?微信公众号完成了自定义菜单怎么点击菜单推送消息?
  • 事件还原:前段时间想添加几个关键字回复然后发现...原因:哪怕再开发者模式下配置了自定义菜单,每次关闭开发者模式在开启后都需要重新生成一次自定义菜单接口 解决方案:https://blog.csdn.net/weixin_39696369/...
  • 微信在扫一扫的时候如何显示右上角的按钮菜单。, 并且菜单自定义
  • 微信公众测试号自定义菜单

    千次阅读 2019-11-29 20:04:19
    最近在做一个基于微信公众号的资源回收系统,由于与队长的想法发生冲突的原因,就打算自己自学一下微信公众号的自定义菜单。 ▍概述 由于目前只是在大学阶段,没有企业身份,不能进行企业注册,也就无法使用...
  • 一、订阅号能开发菜单吗? 目前新申请的订阅号不能申请自定义菜单资格,只有服务号才可以。...2) 在2013年3月26日的时候,微信曾经开放过一周时间的自定义菜单申请,允许政府及媒体申请自定义菜单,那一批申请
  • 微信公众号自定义菜单添加emoji表情图标 第一步:打开微信公众平台接口调试工具,点击前往接口调试工具; 第二步:把这段代码 {"button":[{"sub_button":[{"type":"\ue10d"}]}]} 复制到body编辑框,如下图示例...
  • 微信,太强大了。微信也许是国内使用率最高,覆盖面最广的APP,在2017年微信公开课中,张小龙发布的《2016微信数据报告》显示,微信平均日活达到7.68亿。
  • (2)微信公众平台自定义菜单的创建、查询和删除。 实现菜单效果示例如下: 请通过2种方式实现创建菜单,写出所有实现步骤: 第一种方式: 使用微信公众平台接口调试工具创建。只需要输入access_token和菜单格式方可...
  • 大神们,帮忙给点思路,谢谢! ![图片说明](https://img-ask.csdn.net/upload/201608/30/1472553031_41165.png)
  • https://www.zhihu.com/question/28823310
  • 微信公众号自定义菜单如何添加emoji表情图标? 听语音 | 浏览:3183 | 更新:2017-04-20 19:44 | 标签:微信 微信公众号  1 2 3 4 5 6 7 分步阅读 ...
1 2 3 4 5 ... 20
收藏数 248,787
精华内容 99,514
关键字:

自定义菜单