Android 侧边栏,如 Facebook 或 firefox

有了新的Facebook应用程序,它带有一个隐藏的侧边栏,我很乐意在我的应用程序中使用类似的东西。它看起来有点像火狐手机的侧边栏...

除了重新实现ViewPager之外,您还知道如何实现它吗?我尝试过使用 HorizontalScrollView,但这也会导致它重新实现...

除了这两种方式之外,我没有看到任何其他方式...有什么建议吗?

提前致谢


答案 1

我想出了一个解决方案...我不知道它是否完美,但它工作得很好。

因此,我所做的是一个单一的FrameLayout,其中两个布局堆叠在一起,然后我只是将顶部布局动画化以滑向屏幕右侧(只需要调用slideTo或rollackBy。基本上就是这样!非常简单有效!(代码虽然不是很漂亮:P)

编辑:

一些代码示例。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFF" >

        <include
        android:id="@+id/menu_layout"
            layout="@layout/menu_list"
            android:visibility="invisible"/>

        <include
            android:id="@+id/news_list_parent"
            layout="@layout/main_news_list" 
            />

</FrameLayout>

这是xml的布局,非常简单。包含.xml是带有标题和列表视图的简单线性布局。

“魔术”发生在动画中:

protected void applyTransformation(float interpolatedTime, Transformation t) {
    int newOffset;
    if(expanded) {
        newOffset = 0;
        newOffset = (int)(endOffset*(1-interpolatedTime));
    } else {
        newOffset = (int)(endOffset*(interpolatedTime));
    }
    view.scrollTo(-newOffset, 0);
}

结束偏移是目标移动。我在开始动画之前设置了它,并且要动画化的视图(在本例中是id = news_list_parent的视图),它是在构造函数上设置的。

但是,为了理解它是如何工作的,一个按钮和它的监听器会做这样的事情:

if(viewBeneath.getVisibility() == View.INVISIBLE) {
    viewBeneath.setVisibility(View.Visible);
    viewToSlide.slideTo(-(width-50), 0);
}

最后覆盖后退按钮以执行与按钮相反的操作

if(viewBeneath.getVisibility() == View.VISIBLE) {
    viewToSlide.slideTo(0, 0);
    viewBeneath.setVisibility(View.Visible);
}

将此作为伪代码阅读=)这就是我在开始时所做的,代码丢失:P


答案 2

你可以试试这个。好的例子。检查滑块类..

https://github.com/gitgrimbo/android-sliding-menu-demo


推荐