现在的位置: 首页 > 综合 > 正文

Android仿系统Menu的代码

2013年10月06日 ⁄ 综合 ⁄ 共 4613字 ⁄ 字号 评论关闭

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

抱歉!评论已关闭.