Facebook 幻灯片滑出菜单(不使用该库)
Posted
技术标签:
【中文标题】Facebook 幻灯片滑出菜单(不使用该库)【英文标题】:Facebook lide slideout menu (Not using that library) 【发布时间】:2012-07-04 22:42:52 【问题描述】:我想在我的应用程序中使用类似 facebook 的菜单。这方面有很多线程,所有线程都建议使用一个库,该库实际上只是截取屏幕截图并将该图像向右滑动,以便在左侧显示菜单并通过一些过渡滑动图像。但在这种情况下,右侧的布局是不可点击的,因为它是一个图像。
但我有另一种方法,我有一个 根布局,它已经 具有菜单布局和内容布局。但是根布局向左设置了一些负边距,因此它不可见。像这样-
当用户按下菜单按钮时,菜单布局向右滑动,根布局的左边距设置为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);
【问题讨论】:
你有什么运气吗? 是的,问题以某种方式解决了。请检查下面的答案。 你可能想看看这个问题的答案:***.com/q/17884277/1491212 你能发布完整的项目代码库吗? 【参考方案1】:我终于可以做到了。这是我单击左上角的菜单按钮时使用的代码:
@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
。
【讨论】:
以上是关于Facebook 幻灯片滑出菜单(不使用该库)的主要内容,如果未能解决你的问题,请参考以下文章