热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Menu自定义菜单

为什么80%的码农都做不了架构师?这篇是基于:http:my.oschina.netu1773495blog306046menu菜单键写的。效果图

为什么80%的码农都做不了架构师?>>>   hot3.png

这篇是基于:http://my.oschina.net/u/1773495/blog/306046 menu 菜单键写 的。

 效果图片,点击Menu.                                            点击图片中的“更多”    

 

 

接下来是:gridview_menu.xml



item_menu.xml:



主java程序:

 

package com.example.menutest;import java.util.ArrayList;
import java.util.HashMap;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnKeyListener;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.SimpleAdapter;
import android.widget.Toast;public class MainActivity extends Activity {boolean isMore = false;private final int ITEM_NOTE = 0;private final int ITEM_MORE = 1;private View menuView;AlertDialog menuDialog;GridView menuGridView;int[] arrayImage1 = {R.drawable.menu_edit,R.drawable.menu_more};String [] arrayText1 ={ "书签","更多"};int[] arrayMore ={R.drawable.menu_return,R.drawable.menu_about};String [] arrayText2 ={"信息","返回"};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);// 创建对话框menuDialog = new AlertDialog.Builder(this).create();Log.d("E","menuview");//获取view布局对象。第二参数root,表示是否给该布局外部再嵌套一层父布局,null为不要。//menuView = View.inflate(this, R.layout.gridview_menu, null);LayoutInflater layoutInflater = LayoutInflater.from(this); menuView = layoutInflater.inflate(R.layout.gridview_menu,null);// menuDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); //将menuView(也就 是R.layout.gridview_menu) 加载到 menuDialogmenuDialog.setView(menuView);//给对话框 添加 按键事件。menuDialog.setOnKeyListener(new OnKeyListener() { @Overridepublic boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {if(keyCode==KeyEvent.KEYCODE_MENU){dialog.dismiss();//关闭对话框。//menuDialogbuilder.create().show();}return false;}});// 一定记得menuView加上。menuGridView = (GridView)menuView.findViewById(R.id.gridview);menuGridView.setAdapter(adapterDuilder(arrayImage1, arrayText1));menuGridView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView arg0, View arg1, int arg2,long arg3) {switch (arg2) {case ITEM_NOTE:Toast.makeText(getApplicationContext(),"书签",Toast.LENGTH_LONG).show();break;case ITEM_MORE:if(isMore){menuGridView.setAdapter(adapterDuilder(arrayMore, arrayText2));isMore = false;}else{menuGridView.setAdapter(adapterDuilder(arrayImage1,arrayText1));isMore = true;}//更新 menu.menuGridView.invalidate();menuGridView.setSelection(ITEM_MORE);break;default:break;}} });}public SimpleAdapter adapterDuilder(int[]arrayImageName ,String[] arrayTextName) {ArrayList> data = new ArrayList>();for(int i=0;i map = new HashMap();map.put("Image",arrayImageName[i]);map.put("Text",arrayTextName[i]);data.add(map);}SimpleAdapter myAdapter = new SimpleAdapter(this, data,R.layout.item_menu,new String[]{"Image","Text"},new int[]{R.id.item_image,R.id.item_text});return myAdapter; }@Overridepublic boolean onCreateOptionsMenu(Menu menu) {menu.add("menu");//调试结果:is 为 ture.boolean is = super.onCreateOptionsMenu(menu);Log.d("oncreat","menu " + is);return true;}public boolean onMenuOpened(int featureId, Menu menu){Log.d("D","menuDailog is showde!!");menuDialog.show();return false;//返回false不显示 默认menu.}}


 


转:https://my.oschina.net/u/1773495/blog/306372



推荐阅读
  • 本文介绍如何使用 Android 的 Canvas 和 View 组件创建一个简单的绘图板应用程序,支持触摸绘画和保存图片功能。 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • 本文介绍如何使用布局文件在Android应用中排列多行TextView和Button,使其占据屏幕的特定比例,并提供示例代码以帮助理解和实现。 ... [详细]
  • 本文详细介绍了 Android 开发中 layout_gravity 属性的使用方法及其在不同布局下的效果,旨在帮助开发者更好地理解和利用这一属性来精确控制视图的布局。 ... [详细]
  • This guide provides a comprehensive step-by-step approach to successfully installing the MongoDB PHP driver on XAMPP for macOS, ensuring a smooth and efficient setup process. ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • Android LED 数字字体的应用与实现
    本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • 本题探讨如何通过最大流算法解决农场排水系统的设计问题。题目要求计算从水源点到汇合点的最大水流速率,使用经典的EK(Edmonds-Karp)和Dinic算法进行求解。 ... [详细]
  • 实体映射最强工具类:MapStruct真香 ... [详细]
  • ListView简单使用
    先上效果:主要实现了Listview的绑定和点击事件。项目资源结构如下:先创建一个动物类,用来装载数据:Animal类如下:packagecom.example.simplelis ... [详细]
author-avatar
mobiledu2502857697
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有