教你如何创建类似QQ的android弹出菜单
热心推荐:
Android ListView两种长按弹出菜单方式
popupwindow实现弹出菜单效果
Android人才招聘——最新招聘
大家可能看到 android 的自带的系统菜单比较难看,如图:
手机QQ
我今天做的就是类似手机QQ的菜单,效果图如下:
package cn.mxgsa.menu; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.view.Gravity; import android.view.KeyEvent; import android.view.Menu; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.GridView; import android.widget.PopupWindow; import android.widget.Toast; public class MenuLikeQQActivity extends Activity { /** * 定义popupwindow */ private PopupWindow popup; /** * 定义适配器 */ private MenuAdapter menuAdapter; //菜单项列表 private List<MenuInfo> menulists; //定义gridview private GridView menuGridView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); initPopuWindows(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // TODO Auto-generated method stub return true; } /** * 设置PopupWindows */ private void initPopuWindows() { //初始化gridview menuGridView=(GridView)View.inflate(this, R.layout.gridview_menu, null); //初始化PopupWindow,LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT控制显示 popup = new PopupWindow(menuGridView, LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); // 设置menu菜单背景 popup.setBackgroundDrawable(getResources().getDrawable(R.drawable.menu_background)); // menu菜单获得焦点 如果没有获得焦点menu菜单中的控件事件无法响应 popup.setFocusable(true); //设置显示和隐藏的动画 popup.setAnimationStyle(R.style.menushow); popup.update(); //设置触摸获取焦点 menuGridView.setFocusableInTouchMode(true); //设置键盘事件,如果按下菜单键则隐藏菜单 menuGridView.setOnKeyListener(new android.view.View.OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { // TODO Auto-generated method stub if ((keyCode == KeyEvent.KEYCODE_MENU) && (popup.isShowing())) { popup.dismiss(); return true; } return false; } }); //添加菜单按钮事件 menuGridView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub MenuInfo mInfo = menulists.get(arg2); popup.dismiss(); if (mInfo.ishide) { return; } switch (mInfo.menuId) { case MenuUtils.MENU_ADD_FRIEND: Toast.makeText(MenuLikeQQActivity.this, "添加好友", 1).show(); break; case MenuUtils.MENU_ADD_GROUP: Toast.makeText(MenuLikeQQActivity.this, "添加分组", 1).show(); break; case MenuUtils.MENU_EXIT: Toast.makeText(MenuLikeQQActivity.this, "退出应用", 1).show(); break; case MenuUtils.MENU_GROUP_ACCURATE: break; case MenuUtils.MENU_GROUP_CATEGORY: break; case MenuUtils.MENU_HELP: Toast.makeText(MenuLikeQQActivity.this, "检查更新", 1).show(); break; case MenuUtils.MENU_LOGOUT: Toast.makeText(MenuLikeQQActivity.this, "切换用户", 1).show(); break; case MenuUtils.MENU_SERCH_FRIEND: Toast.makeText(MenuLikeQQActivity.this, "搜索好友", 1).show(); break; case MenuUtils.MENU_SETTING: Toast.makeText(MenuLikeQQActivity.this, "设置", 1).show(); break; } } }); } @Override public boolean onMenuOpened(int featureId, Menu menu) { // TODO Auto-generated method stub if (popup != null) { menulists = MenuUtils.getMenuList(); menuAdapter = new MenuAdapter(this, menulists); menuGridView.setAdapter(menuAdapter); popup.showAtLocation(this.findViewById(R.id.linearlayout), Gravity.BOTTOM, 0, 0); } return false;// 返回为true 则显示系统menu } @Override public boolean onPrepareOptionsMenu(Menu menu) { // TODO Auto-generated method stub menu.add("menu"); return super.onPrepareOptionsMenu(menu); } }
下载地址
教你如何创建类似QQ的android弹出菜单相关推荐
- android 弹出菜单环形,『Android自定义View实战』实现一个小清新的弹出式圆环菜单...
前言 Android表现快捷菜单的形式有很多种,比如使用PopupWindow弹出来的小弹窗,类似QQ的侧拉功能菜单,以及之前讲过的弧形菜单( Android 自定义弧形旋转菜单栏--卫星菜单),这次 ...
- android 弹出菜单 toast,Android学习第二天:Toast(提醒)、Menu(菜单)、Intent的显式和隐式(包括打开、适配网站,调用拨号界面等)...
1.Toast提醒 为昨天写的按钮程序添加一个提醒,在MainActivity中添加如下代码: Button bt1 = (Button) findViewById(R.id.button_1); b ...
- android qq右上加号,仿QQ空间点击加号弹出菜单特效
最近项目需要,前几天写了一个仿微信相册(包括编辑相册)功能,审核代码的时候发现同事要实现一个类似仿QQ空间点击加号弹出菜单特效,于是看了一些他的代码,我发现虽然他实现了功能,但是不够完善,所以我又花了 ...
- android弹出窗口的实现(PopupWindow)
android弹出窗口的实现(PopupWindow) 最近看到新浪微博顶部栏的微博分组效果很炫,从网上查了一些资料明白原来是用PopupWindow实现的,今天自己也写了一个例子实现 ...
- [Android] 底部菜单布局+PopupWindows实现弹出菜单功能(初级篇)
这篇文章主要是自己研究如何对底部菜单进行布局,并简单的实现点击不同"按钮"实现图片切换和背景切换的功能,最后通过PopupWindows实现弹出菜单,点击不同按钮能实现不同 ...
- android点击按钮弹出输入框,android 弹出框(输入框和选择框)
1.输入框: final EditText inputServer = new EditText(this); inputServer.setFilters(new InputFilter[]{new ...
- 仿qq等右上角弹出气泡菜单效果
仿QQ右上角的弹出菜单框 博客同步自:个人博客主页 Screenshots How to Use step 1 Add the JitPack repository to your build fil ...
- android 弹出PopupWindow后背景逐渐变暗
今天,简单讲讲android在弹出 PopupWindow后如何使背景逐渐变暗. 我之前做的效果是在PopupWindow弹出时立即将背景变暗,这个也很简单. 在PopupWindow弹出时,将 ...
- android 弹出网格菜单,在android中的recyclerView中显示弹出按钮的确...
as per my above comment可以使用Popup Menu Android Popup Menu displays the menu below the anchor text if ...
最新文章
- Debian 陷入尴尬,社区或群龙无首
- 两难!到底用 Spring BeanUtils 还是 Apache BeanUtils?
- 第三部分:Android 应用程序接口指南---第二节:UI---第八章 Toast通知
- python中json模块博客园_python的json模块
- 数据库实例:用户注册
- 计算机中国象棋书籍,[建议]中国的象棋永远不能被没有“思维”的电脑所代替(就目前的电脑象棋软件...
- Navigator对象
- 深入搜索引擎的关键——索引
- PMP考试重点总结八——监控过程组(2)
- iOS15绕过激活锁工具TiggerRamDisk3.6,支持最新iOS15.5绕过
- flutter Android混淆
- Kubernetes能成大事,华为云的眼光“真毒”
- 相比于 Java 10 的 var, 更期待 Java 11 支持多行字符串
- Qt MDI Window开发
- Appium_3_环境配置_Appium-desktop配置
- 【Tools】HP/惠普v285w 量产工具
- oa处理会签流程图_关于合同会签oa流程使用说明..doc
- SpringBoot项目启动时如何自动弹出启动页,如何修改默认启动路径
- 11.1 身在大学,不追浮云——《逆袭大学》连载
- jQuery:等页面DOM加载完毕后再执行代码