Android仿系统Menu的代码

来源:互联网 发布:网络检测插件 编辑:程序博客网 时间:2024/05/20 20:47

make following menu_example.xml file

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/lylMenu"    android:layout_width="fill_parent"    android:layout_height="match_parent"    android:gravity="bottom"    android:orientation="vertical"    android:visibility="invisible" >    <TextView        android:layout_width="fill_parent"        android:layout_height="1dp"        android:background="#ffffff" />    <LinearLayout        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:background="#ffffff"        android:gravity="bottom|center"        android:orientation="horizontal" >    <Button            android:id="@+id/mnubtnExit"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_marginRight="1dp"            android:layout_weight="1.3"            android:background="@drawable/button_selector"            android:drawableTop="@drawable/icon_exit"            android:text="Exit"            android:textColor="#FFFFFF"            android:textSize="15sp"            android:textStyle="bold" />        <Button            android:id="@+id/mnubtnRefresh"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_marginLeft="1dp"            android:layout_marginRight="1dp"            android:layout_weight="1"            android:background="@drawable/button_selector"            android:drawableTop="@drawable/icon_refresh"            android:text="Refresh"            android:textColor="#FFFFFF"            android:textSize="15sp"            android:textStyle="bold" />        <Button            android:id="@+id/mnubtnExport"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_marginRight="1dp"            android:layout_weight="1"            android:background="@drawable/button_selector"            android:drawableTop="@drawable/icon_export"            android:text="Export"            android:textColor="#FFFFFF"            android:textSize="15sp"            android:textStyle="bold" />        <Button            android:id="@+id/mnubtnDelete"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_marginRight="1dp"            android:layout_weight="0.9"            android:background="@drawable/button_selector"            android:drawableTop="@drawable/icon_delete"            android:text="Delete All"            android:textColor="#FFFFFF"            android:textSize="15sp"            android:textStyle="bold" />        <Button            android:id="@+id/mnubtnSettings"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_marginRight="1dp"            android:layout_weight="0.9"            android:background="@drawable/button_selector"            android:drawableTop="@drawable/icon_settings"            android:text="Settings"            android:textColor="#FFFFFF"            android:textSize="15sp"            android:textStyle="bold" />    </LinearLayout>    <TextView        android:layout_width="fill_parent"        android:layout_height="1dp"        android:background="#ffffff" /></LinearLayout>

Apply menu at the bottom of your desired layout file as per following : 
You have to give bottom margin as per your menu height.

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="@drawable/effect_message_background"    android:orientation="vertical" >    <ScrollView        android:layout_width="fill_parent"        android:layout_height="fill_parent" >    </ScrollView>    <RelativeLayout        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_marginTop="-60dip"        android:gravity="bottom" >        <include layout="@layout/menu_example" />    </RelativeLayout></LinearLayout>

apply following code to slide up and down.

LinearLayout lyl_Menu = = (LinearLayout)findViewById(R.id.lylMenu);@Override    public boolean onKeyDown(int keyCode, KeyEvent event)    {        try        {            if(keyCode == KeyEvent.KEYCODE_MENU)            {                //System.out.println("MENU PRESSED...........");                if(lyl_Menu.isShown())                {                    goneFooter();                }                else                {                    visibleFooter();                }            }            else if(keyCode == KeyEvent.KEYCODE_BACK)            {                if(lyl_Menu.isShown())                {                    goneFooter();                    return true;                }            }        }        catch (Exception e)        {            e.printStackTrace();        }        return super.onKeyDown(keyCode, event);    }    public void visibleFooter()    {        if(!lyl_Menu.isShown())        {            lyl_Menu.setVisibility(View.VISIBLE);            lyl_Menu.startAnimation(AnimationUtils.loadAnimation(UserData.this, R.anim.slide_up_in));        }    }    public void goneFooter()    {        if(lyl_Menu.isShown())        {            lyl_Menu.startAnimation(AnimationUtils.loadAnimation(UserData.this, R.anim.slide_up_out));            lyl_Menu.setVisibility(View.INVISIBLE);        }    }

Make anim folder in res folder e.g. res/anim put following to animation xml files in anim folder :

1) slide_up_in.xml

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

2) slide_up_out.xml

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

转帖:http://stackoverflow.com/questions/8633157/how-to-get-menu-whose-5-menuitems-are-on-the-single-line