5

我想在我的应用程序中有类似 facebook 的菜单。这方面有很多线程,所有线程都建议使用一个库,该库实际上只是截取屏幕截图并将该图像向右滑动,以便在左侧显示菜单并滑动带有一些过渡的图像。但在这种情况下,右侧的布局是不可点击的,因为它是一个图像。

但是我有另一种方法,其中我有一个已经有 Menu Layout 和 Content Layout的Root Layout 。但是根布局向左设置了一些负边距,因此它不可见。像这样-

未按下菜单时的内容

当用户按下菜单按钮时,菜单布局向右滑动,根布局的左边距设置为 0。所以现在我们看到的是 -

按下菜单并显示菜单布局时的内容

现在,真正的问题从这里开始

我想用一些动画来滑动两个布局。因此,当我为菜单布局和内容布局设置动画时,即使我对其应用相同的动画,两种布局的动画速度也不相同。所以我尝试通过设置边距来将ROOT LAYOUT 仅向右/向左移动。但这样做时,屏幕上不会显示任何内容。我哪里错了。我设置边距的方式如下所示-

int width = leftLayout.getWidth();
isLayoutShown = !isLayoutShown;
if(isLayoutShown){
    rootLayoutParams.setMargins(0, 0, 0, 0);
    rootLayout.setLayoutParams(rootLayoutParams);    
}else{
    rootLayoutParams.setMargins(-width, 0, 0, 0);
    rootLayout.setLayoutParams(rootLayoutParams);
}
4

1 回答 1

4

终于以某种方式我可以做到。这是我单击左上角的菜单按钮时使用的代码:

@Override
public void onClick(View v) {
rootLayoutParams = new LayoutParams(rightLayout.getWidth(),
    rightLayout.getHeight());

if (lhsMenu.getVisibility() == View.GONE) {
    lhsMenu.setVisibility(View.VISIBLE);
    Animation slideRight = setRightSlidingAnimation();
    rightLayout.setAnimation(slideRight);
    lhsMenu.setAnimation(slideRight);
} else {
    Animation slideLeft = setLeftSlidingAnimation();
    rightLayout.setAnimation(slideLeft);
    lhsMenu.setAnimation(slideLeft);
    lhsMenu.setVisibility(View.GONE);
    }
}

更新:还将边距设置为左右(如果需要),rightLayout以便 rightLayout 不会缩小。

_rightLayoutParams.setMargins(width, 0, -width, 0);

width = 200我的情况下。

于 2012-07-10T06:03:13.303 回答