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> 
  • 相关阅读:
    HTML
    数据挖掘之分类——基于规则的分类器
    Ubuntu 14.04下Hadoop2.4.1集群安装配置教程
    Jdk1.7+eclipse搭建Java开发环境
    约瑟夫环问题
    Linux 绝对路径与相对路径
    排序算法汇总
    朋友圈问题
    HTTP状态码
    哈希冲突,哈希函数
  • 原文地址:https://www.cnblogs.com/gongcb/p/2808363.html
Copyright © 2011-2022 走看看