<?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="134dip"     android:id="@+id/launcher_menu"    android:gravity="bottom"    android:clickable="true"android:focusable="true"    >    <LinearLayout android:layout_width="fill_parent"       android:layout_height="67dip"       android:orientation="horizontal"       android:gravity="center" >    <LinearLayout android:id="@+id/layout_item_1"       android:layout_width="fill_parent"       android:layout_height="67dip"       android:layout_weight="1"      android:orientation="vertical"       android:clickable="true"      android:focusable="true"      android:background="@drawable/launcher_menu_selector"      android:gravity="center" >    <TextView android:id="@+id/menu_item_text_1"       android:layout_width="wrap_content"       android:layout_height="fill_parent"      android:textColor="#000000"      android:includeFontPadding="false"       android:gravity="center" />    </LinearLayout>    <LinearLayout android:id="@+id/layout_item_2"       android:layout_width="fill_parent"       android:layout_height="67dip"       android:layout_weight="1"      android:orientation="vertical"       android:clickable="true"      android:focusable="true"      android:background="@drawable/launcher_menu_selector"      android:gravity="center" >    <TextView android:id="@+id/menu_item_text_2"       android:layout_width="wrap_content"       android:layout_height="fill_parent"      android:textColor="#000000"          android:includeFontPadding="false"       android:gravity="center" />    </LinearLayout>    <LinearLayout android:id="@+id/layout_item_3"       android:layout_width="fill_parent"       android:layout_height="67dip"       android:layout_weight="1"      android:orientation="vertical"       android:clickable="true"      android:focusable="true"      android:background="@drawable/launcher_menu_selector"      android:gravity="center" >    <TextView android:id="@+id/menu_item_text_3"       android:layout_width="wrap_content"       android:layout_height="fill_parent"      android:textColor="#000000"          android:includeFontPadding="false"       android:gravity="center" />    </LinearLayout>        </LinearLayout><LinearLayout android:layout_width="fill_parent"       android:layout_height="67dip"       android:orientation="horizontal"       android:gravity="center" >    <LinearLayout android:id="@+id/layout_item_4"       android:layout_width="fill_parent"       android:layout_height="67dip"       android:layout_weight="1"      android:orientation="vertical"       android:clickable="true"      android:focusable="true"      android:background="@drawable/launcher_menu_selector"      android:gravity="center" >    <TextView android:id="@+id/menu_item_text_4"       android:layout_width="wrap_content"       android:layout_height="fill_parent"      android:textColor="#000000"          android:includeFontPadding="false"       android:gravity="center" />    </LinearLayout>    <LinearLayout android:id="@+id/layout_item_5"       android:layout_width="fill_parent"       android:layout_height="67dip"       android:layout_weight="1"      android:orientation="vertical"       android:clickable="true"      android:focusable="true"      android:background="@drawable/launcher_menu_selector"      android:gravity="center" >    <TextView android:id="@+id/menu_item_text_5"       android:layout_width="wrap_content"       android:layout_height="fill_parent"      android:textColor="#000000"          android:includeFontPadding="false"       android:gravity="center" />    </LinearLayout>    <LinearLayout android:id="@+id/layout_item_6"       android:layout_width="fill_parent"       android:layout_height="67dip"       android:layout_weight="1"      android:orientation="vertical"       android:clickable="true"      android:focusable="true"      android:background="@drawable/launcher_menu_selector"      android:gravity="center" >    <TextView android:id="@+id/menu_item_text_6"       android:layout_width="wrap_content"       android:layout_height="fill_parent"      android:textColor="#000000"          android:includeFontPadding="false"       android:gravity="center" />    </LinearLayout>        </LinearLayout></LinearLayout>

@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if(keyCode == KeyEvent.KEYCODE_MENU){showLauncherMenu(keyCode, event);return true;}...}

private PopupWindow menuWindow;private void showLauncherMenu(int keyCode, KeyEvent event) {if(keyCode == KeyEvent.KEYCODE_MENU){int[] menuItemLayoutResId = {R.id.layout_item_1, R.id.layout_item_2, R.id.layout_item_3,R.id.layout_item_4, R.id.layout_item_5, R.id.layout_item_6};int[] menuItemTextViewResId = {R.id.menu_item_text_1, R.id.menu_item_text_2, R.id.menu_item_text_3,R.id.menu_item_text_4, R.id.menu_item_text_5, R.id.menu_item_text_6};if(null == menuWindow){final View layout = View.inflate(this, R.layout.launcher_menu, null);menuWindow = new PopupWindow(layout,LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);for(int i=0; i<6; i++){...//处理菜单项点击事件,菜单图标、文字等//菜单显示后,焦点移动到了PopupWindow上的菜单项,需要在菜单项捕获Menu键以达到隐藏菜单的效果LinearLayout menuItemLayout = (LinearLayout)layout.findViewById(menuItemLayoutResId[i]);menuItemLayout.setOnKeyListener(new OnKeyListener(){@Overridepublic boolean onKey(View v, int keyCode, KeyEvent event) {switch (keyCode) {                case KeyEvent.KEYCODE_MENU:                if(event.getAction() == KeyEvent.ACTION_DOWN){                    if (menuWindow != null && menuWindow.isShowing()) {                    menuWindow.dismiss();                    }                }                    break;                }return false;}});}layout.setFocusable(true);layout.setFocusableInTouchMode(true);layout.setOnKeyListener(new OnKeyListener(){@Overridepublic boolean onKey(View v, int keyCode, KeyEvent event) {switch (keyCode) {                case KeyEvent.KEYCODE_MENU:                if(event.getAction() == KeyEvent.ACTION_DOWN){                    if (menuWindow != null && menuWindow.isShowing()) {                    menuWindow.dismiss();                    }                }                case KeyEvent.KEYCODE_DPAD_DOWN:                case KeyEvent.KEYCODE_DPAD_UP:                case KeyEvent.KEYCODE_DPAD_LEFT:                case KeyEvent.KEYCODE_DPAD_RIGHT:                layout.findViewById(R.id.layout_item_1).requestFocus();                    break;                }return false;}});}if(!menuWindow.isShowing()){//处理菜单项"添加"是否可用mMenuAddInfo = mWorkspace.findAllVacantCellsFromModel();boolean isAddEnabled = mMenuAddInfo != null && mMenuAddInfo.valid;LinearLayout layout_item_add = (LinearLayout)menuWindow.getContentView().findViewById(R.id.layout_item_1);layout_item_add.requestFocus();layout_item_add.setClickable(isAddEnabled);layout_item_add.setBackgroundResource(isAddEnabled ? R.drawable.launcher_menu_selector : R.drawable.launcher_menu_disabled);Drawable icon = ThemeParser.loadMenuIcon(0);icon.setBounds(0, 0, icon.getIntrinsicWidth(), icon.getIntrinsicHeight());icon.setAlpha(isAddEnabled ? 0xFF :(int)(0.2 * 0xFF));TextView text_item_add = (TextView)menuWindow.getContentView().findViewById(R.id.menu_item_text_1);text_item_add.setTextColor(isAddEnabled ? Color.parseColor("#000000") : R.color.gray);text_item_add.setCompoundDrawables(null, icon, null, null);boolean isOrientationLandscape = ScreenUtil.isOrientationLandscape(this);if(isOrientationLandscape){menuWindow.setHeight(ScreenUtil.dip2px(this, 67));}else{menuWindow.setHeight(ScreenUtil.dip2px(this, 134));}((LinearLayout)menuWindow.getContentView().findViewById(R.id.launcher_menu)).setBackgroundDrawable(ThemeParser.loadThemeMenuBackground(isOrientationLandscape));menuWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.transparent));menuWindow.setFocusable(true);menuWindow.setOutsideTouchable(true);//设置菜单显示隐藏的动画menuWindow.setAnimationStyle(R.style.PopupAnimation);menuWindow.showAtLocation(findViewById(R.id.drag_layer), Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0);menuWindow.update();}else{menuWindow.dismiss();}}}

更多相关文章

  1. Android之菜单总结
  2. Android学习篇之Menu的使用
  3. TabHost与RadioGroup结合完成的菜单【带效果图】5个Activity
  4. android 音效处理 (2)
  5. Android开发之消息处理机制(一)——Handler
  6. android 音效处理 (2)
  7. SlidingMenu和ActionBarSherlock结合做出出色的App布局,Facebook
  8. [android]在上下文菜单的选中事件中获取列表选中的元素
  9. android api 中文 (74)—— AdapterView.AdapterContextMenuInfo

随机推荐

  1. Screen and UI Performance
  2. Android(安卓)隐藏Fragment
  3. 选择对话框
  4. Android获取手机屏幕参数的工具
  5. Android——ImageView设置圆形边框
  6. android uid gid
  7. android中获取手机短信,删除短信功能
  8. Aandroid 关于处理个推透传消息
  9. Java W3C 生成 XML
  10. Android与服务器http连接模块代码