热门标签 | 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



推荐阅读
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • com.sun.javadoc.PackageDoc.exceptions()方法的使用及代码示例 ... [详细]
  • 本文介绍如何在 Android 中自定义加载对话框 CustomProgressDialog,包括自定义 View 类和 XML 布局文件的详细步骤。 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • 阿里巴巴终面技术挑战:如何利用 UDP 实现 TCP 功能?
    在阿里巴巴的技术面试中,技术总监曾提出一道关于如何利用 UDP 实现 TCP 功能的问题。当时回答得不够理想,因此事后进行了详细总结。通过与总监的进一步交流,了解到这是一道常见的阿里面试题。面试官的主要目的是考察应聘者对 UDP 和 TCP 在原理上的差异的理解,以及如何通过 UDP 实现类似 TCP 的可靠传输机制。 ... [详细]
  • Hyperledger Fabric 1.4 节点 SDK 快速入门指南
    本文将详细介绍如何利用 Hyperledger Fabric 1.4 的 Node.js SDK 开发应用程序。通过最新版本的 Fabric Node.js SDK,开发者可以更高效地构建和部署基于区块链的应用,实现数据的安全共享和交易处理。文章将涵盖环境配置、SDK 安装、示例代码以及常见问题的解决方法,帮助读者快速上手并掌握核心功能。 ... [详细]
  • Python 序列图分割与可视化编程入门教程
    本文介绍了如何使用 Python 进行序列图的快速分割与可视化。通过一个实际案例,详细展示了从需求分析到代码实现的全过程。具体包括如何读取序列图数据、应用分割算法以及利用可视化库生成直观的图表,帮助非编程背景的用户也能轻松上手。 ... [详细]
  • 深入解析HTML5字符集属性:charset与defaultCharset
    本文将详细介绍HTML5中新增的字符集属性charset和defaultCharset,帮助开发者更好地理解和应用这些属性,以确保网页在不同环境下的正确显示。 ... [详细]
  • 探索Web 2.0新概念:Widget
    尽管你可能尚未注意到Widget,但正如几年前对RSS的陌生一样,这一概念正逐渐走入大众视野。据美国某权威杂志预测,2007年将是Widget年。本文将详细介绍Widget的定义、功能及其未来发展趋势。 ... [详细]
  • MySQL 5.7 学习指南:SQLyog 中的主键、列属性和数据类型
    本文介绍了 MySQL 5.7 中主键(Primary Key)和自增(Auto-Increment)的概念,以及如何在 SQLyog 中设置这些属性。同时,还探讨了数据类型的分类和选择,以及列属性的设置方法。 ... [详细]
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
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社区 版权所有