如何从右到左进行滑动菜单

时间:2013-07-01 06:20:16

标签: android slide android-4.0-ice-cream-sandwich android-sliding

我搜索了一些滑动示例,

但我还是找不到左右滑动的例子。

任何人都可以从右到左为滑动菜单提供示例项目

3 个答案:

答案 0 :(得分:3)

package com.slidingmenu.example;

import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;

import com.slidingmenu.example.fragments.ColorFragment;
import com.slidingmenu.lib.SlidingMenu;
import com.slidingmenu.lib.SlidingMenu.OnClosedListener;
import com.slidingmenu.lib.SlidingMenu.OnOpenedListener;


public class LeftAndRightActivity extends BaseActivity {

public LeftAndRightActivity() {
super(R.string.left_and_right);
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSlidingMenu().setMode(SlidingMenu.LEFT_RIGHT);
getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);

setContentView(R.layout.content_frame);
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.content_frame, new SampleListFragment())
.commit();

getSlidingMenu().setSecondaryMenu(R.layout.menu_frame_two);
getSlidingMenu().setSecondaryShadowDrawable(R.drawable.shadowright);
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.menu_frame_two, new SampleListFragment())
.commit();
}

}

确保获得一个干净且更新的库副本。以防万一。

答案 1 :(得分:3)

可以使用动画类

完成幻灯片菜单
//Declare inside activity 

        private LinearLayout slidingPanel;
        private boolean isExpanded;
        private DisplayMetrics metrics; 
        //private ListView listView;
        private RelativeLayout headerPanel,menuPanel;

        private int panelWidth;
        private ImageView menuViewButton;   

        FrameLayout.LayoutParams menuPanelParameters;
        FrameLayout.LayoutParams slidingPanelParameters;
        LinearLayout.LayoutParams headerPanelParameters ;
        LinearLayout.LayoutParams listViewParameters;   

    //Initialize inside oncreate
                metrics = new DisplayMetrics();
                getWindowManager().getDefaultDisplay().getMetrics(metrics);
                panelWidth = (int) ((metrics.widthPixels)*0.45);

                headerPanel = (RelativeLayout) findViewById(R.id.header);
                headerPanelParameters = (LinearLayout.LayoutParams) headerPanel.getLayoutParams();
                headerPanelParameters.width = metrics.widthPixels;
                headerPanel.setLayoutParams(headerPanelParameters);

                menuPanel = (RelativeLayout) findViewById(R.id.menuPanel);
                menuPanelParameters = (FrameLayout.LayoutParams) menuPanel.getLayoutParams();
                menuPanelParameters.width = panelWidth;
                menuPanel.setLayoutParams(menuPanelParameters);

                slidingPanel = (LinearLayout) findViewById(R.id.slidingPanel);
                slidingPanelParameters = (FrameLayout.LayoutParams)                 slidingPanel.getLayoutParams();
                slidingPanelParameters.width = metrics.widthPixels;
                slidingPanel.setLayoutParams(slidingPanelParameters);   




                //Slide the Panel   
                menuViewButton = (ImageView) findViewById(R.id.menuViewButton);
                menuViewButton.setOnClickListener(new OnClickListener() {
                    public void onClick(View v) {
                        if(!isExpanded){
                    isExpanded = true;                                          

                    //Expand
                    new ExpandAnimation(slidingPanel, panelWidth,
                            Animation.RELATIVE_TO_SELF, 0.0f,
                            Animation.RELATIVE_TO_SELF, 0.45f, 0, 0.0f, 0, 0.0f);
                    //Toast.makeText(getApplicationContext(), "expand", 0).show();


                        }else{
                            isExpanded = false;

                            //Collapse
                            new CollapseAnimation(slidingPanel,panelWidth,
                            TranslateAnimation.RELATIVE_TO_SELF, 0.45f,
                            TranslateAnimation.RELATIVE_TO_SELF, 0.0f, 0, 0.0f, 0, 0.0f);

                   //Toast.makeText(getApplicationContext(), "Collapse", 0).show();

                        }              
                    }
                }); 


//collapse animation class

    public class CollapseAnimation extends TranslateAnimation implements TranslateAnimation.AnimationListener{

        private LinearLayout slidingLayout;
        int panelWidth;
        public CollapseAnimation(LinearLayout layout, int width, int fromXType, float fromXValue, int toXType,
                float toXValue, int fromYType, float fromYValue, int toYType, float toYValue) {

            super(fromXType, fromXValue, toXType, toXValue, fromYType, fromYValue, toYType, toYValue);

            //Initialize
            slidingLayout = layout;
            panelWidth = width;
            setDuration(400);
            setFillAfter( false );
            setInterpolator(new AccelerateDecelerateInterpolator());
            setAnimationListener(this);

            //Clear left and right margins
            LayoutParams params = (LayoutParams) slidingLayout.getLayoutParams();
            params.rightMargin = 0;
            params.leftMargin = 0;
            slidingLayout.setLayoutParams(params);
            slidingLayout.requestLayout();       
            slidingLayout.startAnimation(this);
            //slidingLayout.setBackgroundColor();
            //slidingLayout.setBackgroundColor(R.string.white);

        }
        @Override
        public void onAnimationEnd(Animation arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onAnimationRepeat(Animation arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onAnimationStart(Animation arg0) {
            // TODO Auto-generated method stub

        }

    }


//expande animation class

    public class ExpandAnimation extends TranslateAnimation implements Animation.AnimationListener{
        private LinearLayout slidingLayout;
        int panelWidth;
        public ExpandAnimation(LinearLayout layout, int width, int fromXType, float fromXValue, int toXType,
                float toXValue, int fromYType, float fromYValue, int toYType, float toYValue) {

            super(fromXType, fromXValue, toXType, toXValue, fromYType, fromYValue, toYType, toYValue);

            //Initialize
            slidingLayout = layout;
            panelWidth = width;
            setDuration(400);
            setFillAfter( false );
            setInterpolator(new AccelerateDecelerateInterpolator());
            setAnimationListener(this);
            slidingLayout.startAnimation(this);
            //slidingLayout.setBackgroundColor(panelWidth);
        }

        @Override
        public void onAnimationEnd(Animation animation) {
            // TODO Auto-generated method stub
            //Create margin and align left
                    LayoutParams params = (LayoutParams) slidingLayout.getLayoutParams();
                    params.leftMargin = panelWidth;
                    params.gravity = Gravity.LEFT;     
                    slidingLayout.clearAnimation();
                    slidingLayout.setLayoutParams(params);
                    slidingLayout.requestLayout();
        }

        @Override
        public void onAnimationRepeat(Animation animation) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onAnimationStart(Animation animation) {
            // TODO Auto-generated method stub

        }

    }

///here is the xml

    <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" >

            <!-- Menu Panel -->

            <RelativeLayout
                android:id="@+id/menuPanel"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:background="@drawable/gray_bg"
                android:gravity="right"
                android:orientation="vertical" >

                <TextView
                    android:id="@+id/menu_title_1"
                    android:layout_width="fill_parent"
                    android:layout_height="50dp"
                    android:layout_alignParentTop="true"
                    android:layout_marginLeft="0dp"
                    android:background="#353535"
                    android:gravity="center_vertical"
                    android:paddingLeft="15dp"
                    android:text="@string/menu_title"
                    android:textColor="@android:color/white" >
                </TextView>

                <View
                    android:id="@+id/menu_item_divider_1"
                    android:layout_width="fill_parent"
                    android:layout_height="0.5dp"
                    android:layout_below="@+id/menu_title_1"
                    android:layout_marginLeft="0dp"
                    android:layout_marginRight="0dp"
                    android:background="#b5b5b5" />

                <TextView
                    android:id="@+id/menu_item_1"
                    android:layout_width="fill_parent"
                    android:layout_height="50dp"
                    android:layout_below="@+id/menu_item_divider_1"
                    android:layout_marginLeft="15dp"
                    android:gravity="center_vertical"
                    android:text="@string/korean" >
                </TextView>

                <View
                    android:id="@+id/menu_item_divider_2"
                    android:layout_width="fill_parent"
                    android:layout_height="0.5dp"
                    android:layout_below="@+id/menu_item_1"
                    android:layout_marginLeft="5dp"
                    android:layout_marginRight="5dp"
                    android:background="#b5b5b5" />

                <TextView
                    android:id="@+id/menu_item_2"
                    android:layout_width="fill_parent"
                    android:layout_height="50dp"
                    android:layout_below="@+id/menu_item_divider_2"
                    android:layout_marginLeft="15dp"
                    android:gravity="center_vertical"
                    android:text="@string/english"
                    >
                </TextView>



            <!-- Sliding Panel -->

            <LinearLayout
                android:id="@+id/slidingPanel"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:background="@android:color/white"
                android:gravity="left"
                android:orientation="vertical" >

                <View
                    android:id="@+id/dividerHeaderBottom"
                    android:layout_width="fill_parent"
                    android:layout_height="1dp"
                    android:background="#414141" />

                <RelativeLayout
                    android:id="@+id/header"
                    android:layout_width="match_parent"
                    android:layout_height="45dp"
                    android:background="@color/whitec" >



                    <Button
                        android:id="@+id/buttonback"
                        android:layout_width="40dp"
                        android:layout_height="40dp"
                        android:layout_alignBottom="@+id/buttonperson"
                        android:layout_alignParentTop="true"
                        android:layout_marginRight="14dp"
                        android:layout_toLeftOf="@+id/buttonperson"
                        android:background="@drawable/back" />



   <ImageView
                android:id="@+id/menuViewButton"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:layout_centerVertical="true"
                android:layout_marginLeft="27dp"
                android:layout_toRightOf="@+id/buttonyummy"
                android:clickable="true"
                android:contentDescription="@string/description"
                android:src="@drawable/lin"
                android:visibility="visible" />

                </RelativeLayout>
            </LinearLayout>
        </FrameLayout>

答案 2 :(得分:-1)

使用this库..它有权向左滑动抽屉..

在活动的onCreate()或您可以使用以下实施的任何地方。

rightDrawer = new DrawerBuilder()
    .withActivity(this)
    .withDisplayBelowStatusBar(true)
    .withSavedInstance(savedInstanceState)
    .withDrawerGravity(Gravity.END).append(leftDrawer); // or use build() instead of append()

它会添加左侧滑动抽屉的权利......