zoukankan      html  css  js  c++  java
  • Android提高篇自定义Menu(二)

     /** 创建MENU */  
        public boolean onCreateOptionsMenu(Menu menu) {  
            menu.add("menu");// 必须创建一项  
            return super.onCreateOptionsMenu(menu);  
        }  
        
        /** 拦截MENU */  
        public boolean onMenuOpened(int featureId, Menu menu) {  
            initPopuWindow();
            return false;// 返回为true 则显示系统menu  
        } 
        
        /**
         * popuwindow 自定义Menus
         */
        private void initPopuWindow(){
            View view = LayoutInflater.from(this).inflate(R.layout.tab_menu, null);
            popupWindow = new PopupWindow(view,LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);
            popupWindow.setBackgroundDrawable(new BitmapDrawable());
            /*设置触摸外面时消失*/  
            popupWindow.setOutsideTouchable(true);
            /*设置系统动画*/  
            popupWindow.setAnimationStyle(R.style.PopupAnimation);
            popupWindow.update();
            popupWindow.setTouchable(true);
            /*设置点击menu以外其他地方以及返回键退出*/  
            popupWindow.setFocusable(true);
            popupWindow.showAtLocation(mLayout,Gravity.BOTTOM, 0, 0); 
            
            /** 
             * 解决再次点击MENU键无反应问题   
             */
            view.setFocusableInTouchMode(true);
            view.setOnKeyListener(new OnKeyListener() {  
                public boolean onKey(View v, int keyCode, KeyEvent event) {  
                    // TODO Auto-generated method stub  
                    if ((keyCode == KeyEvent.KEYCODE_MENU)&&(popupWindow.isShowing())) {  //模拟menu的PopupWindow退出
                        popupWindow.dismiss();
                        return true;  
                    }else if(event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_BACK){//返回键popuwindow消失
                        popupWindow.dismiss();
                        return false;
                    }
                    return false;  
                }  
            });

     popu_enter.xm:

    <?xml version="1.0" encoding="utf-8"?>  
    <set xmlns:android="http://schemas.android.com/apk/res/android">  
        <translate android:fromYDelta="100%p" android:toYDelta="0" android:duration="1000" />  
        <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="1000" />  
    </set>  

    popu_exit.xml:

    <?xml version="1.0" encoding="utf-8"?>  
    <set xmlns:android="http://schemas.android.com/apk/res/android">  
        <translate android:fromYDelta="0" android:toYDelta="100%p" android:duration="1000" />  
        <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="1000" />  
    </set>  

    popup_animation.xml:

    <?xml version="1.0" encoding="utf-8"?>  
    <resources>     
        <style name="PopupAnimation" parent="android:Animation">
            <item name="android:windowEnterAnimation">@anim/popup_enter</item>  
            <item name="android:windowExitAnimation">@anim/popup_exit</item>   
        </style>  
    </resources> 
  • 相关阅读:
    Nginx+Keepalived实现站点高可用
    强(strong)、软(soft)、弱(weak)、虚(phantom)引用
    Linux SSH 连接不上
    ExtJs Column 显示文字内容过长 使用Tootip显示全部内容
    史上最清晰的红黑树讲解(上)
    MySQL Cluster 集群
    分析《统计学习方法第2版》PDF+习题部分代码+部分课件讨论
    Case Styles: Camel, Pascal, Snake, and Kebab Case
    为什么EXE不能超过4GB
    But How Do It Know 关于人工智能的思考
  • 原文地址:https://www.cnblogs.com/gongcb/p/2808363.html
Copyright © 2011-2022 走看看