Facebook的侧滑菜单(不使用该库)

5
我希望在我的应用程序中拥有类似Facebook的菜单。有许多关于此的线程,所有这些线程都建议使用一个库,该库实际上只是对屏幕截图,并将该图像向右滑动以显示左侧的菜单并具有某些过渡效果。但在这种情况下,右侧的布局不可点击,因为它是图像。
但我有一种另一种方法可以做到这一点,即我有一个根布局,其中已经设置了菜单布局和内容布局。但是根布局被设置为向左一些负边距,因此看不到它。就像这样-
当用户按下菜单按钮时,菜单布局向右滑动,根布局的左边距设置为0。所以现在我们看到的是这样的-
现在,真正的问题出现了 我想使用某些动画来同时滑动这两个布局。因此,当我对菜单布局和内容布局进行动画处理时,即使我对两个布局应用相同的动画,两个布局的动画速度也不同。因此,我尝试只移动根布局,将其向右/左设置边距。但这样做屏幕上什么也没有显示。我错在哪里?设置边距的方法如下-
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);
}

你有没有在这方面有什么好运? - EGHDK
是的,问题已经以某种方式解决。请查看下面的答案。 - Rajkiran
你可能想看一下这个问题的答案: https://dev59.com/aGMm5IYBdhLWcg3wFL7s - Armel Larcier
你能贴出完整的项目代码库吗? - Sam
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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接