如何更改自定义滑动菜单的导航

时间:2014-03-04 07:34:52

标签: android slidingmenu android-sliding

我正在尝试自定义滑动导航。我知道已经有很多教程或库可用,但这是出于我自己的目的。

所以基本上我正在尝试打开滑动菜单,它正在打开left to right现在我想从right to left更改它的方向。我怎么能这样做。

以下是我的代码。

public class Profile extends Activity implements OnClickListener {

    private int windowWidth;
    boolean alreadyShowing = false;
    private Animation mAnimation;
    LayoutInflater mLayoutInflater;
    private RelativeLayout mRelativeLayout;

    ImageView sliding_menu;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.profile);

        Display display = getWindowManager().getDefaultDisplay();
        windowWidth = display.getWidth();
        display.getHeight();
        mLayoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        sliding_menu = (ImageView) findViewById(R.id.slidingMenu);
        sliding_menu.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {

                if (!alreadyShowing) {
                    alreadyShowing = true;
                    openSlidingMenu();
                }
            }
        });
    }

    private void openSlidingMenu() {

        int width = (int) (windowWidth * 0.8f);
        translateView((float) (width));
        int height = LayoutParams.FILL_PARENT;
        final View layout = mLayoutInflater.inflate(R.layout.settings,
                (ViewGroup) findViewById(R.id.setting));

        final PopupWindow optionsPopup = new PopupWindow(layout, width, height,
                true);
        optionsPopup.setBackgroundDrawable(new PaintDrawable());
        optionsPopup.showAtLocation(layout, Gravity.NO_GRAVITY, 0, 0);
        optionsPopup.setOnDismissListener(new PopupWindow.OnDismissListener() {
            public void onDismiss() {
                cleanUp();
                translateView(0);
                cleanUp();
                alreadyShowing = false;
            }
        });
    }

    private void translateView(float right) {
        mAnimation = new TranslateAnimation(0f, right, 0f, 0f);
        mAnimation.setDuration(100);
        mAnimation.setFillEnabled(true);
        mAnimation.setFillAfter(true);

        mRelativeLayout = (RelativeLayout) findViewById(R.id.profile);
        mRelativeLayout.startAnimation(mAnimation);
        mRelativeLayout.setVisibility(View.VISIBLE);
    }

    private void cleanUp() {
        if (null != mRelativeLayout) {
            mRelativeLayout.clearAnimation();
            mRelativeLayout = null;
        }
        if (null != mAnimation) {
            mAnimation.cancel();
            mAnimation = null;
        }
    }

enter image description here

所以基本上你可以在上面的图片中看到我的菜单是从left to right打开的,我如何从right to left更改它。

提前谢谢。

1 个答案:

答案 0 :(得分:2)

我已经解决了这个问题,我刚刚将重力改为下面这一行的右侧,它现在正在运行。

optionsPopup.showAtLocation(layout, Gravity.RIGHT, 0, 0);

所以在改变之前我的代码是这样的。

final PopupWindow optionsPopup = new PopupWindow(layout, width, height,true);
optionsPopup.setBackgroundDrawable(new PaintDrawable());
optionsPopup.showAtLocation(layout, Gravity.NO_GRAVITY, 0, 0);

现在就像下面的

final PopupWindow optionsPopup = new PopupWindow(layout, width, height,true);
optionsPopup.setBackgroundDrawable(new PaintDrawable());
optionsPopup.showAtLocation(layout, Gravity.RIGHT, 0, 0);

谢谢大家的帮助。