日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

教你如何创建类似QQ的android弹出菜单

發布時間:2025/5/22 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 教你如何创建类似QQ的android弹出菜单 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

熱心推薦:

Android? ListView兩種長按彈出菜單方式

popupwindow實現彈出菜單效果

Android人才招聘——最新招聘

大家可能看到 android 的自帶的系統菜單比較難看,如圖:

?

很多應用都自己定義了系統菜單, QQ游覽器

手機QQ

我今天做的就是類似手機QQ的菜單,效果圖如下:

這是我用PopupWindow重寫一個菜單 ,popupwindow實現彈出菜單功能非常實用,在有布局中經常出現,給用戶體驗非常不錯 ,主要是控制菜單的顯示和消失(動畫控制),另外對文字和圖片(大小最好都一樣,否則最后效果有點難看)分別做了適配,其中對文字的長度進行了處理。 下面不用多說,進行代碼.需要提一下的是,屏蔽一下系統菜單,需要下面兩步1. 需要創建至少一個系統菜單選項

2. 在onMenuOpened方法里顯示自己的菜單視圖,并返回FALSE

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弹出菜单的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。