Android 侧边栏,如 Facebook 或 firefox
2022-09-03 00:01:35
有了新的Facebook应用程序,它带有一个隐藏的侧边栏,我很乐意在我的应用程序中使用类似的东西。它看起来有点像火狐手机的侧边栏...
除了重新实现ViewPager之外,您还知道如何实现它吗?我尝试过使用 HorizontalScrollView,但这也会导致它重新实现...
除了这两种方式之外,我没有看到任何其他方式...有什么建议吗?
提前致谢
有了新的Facebook应用程序,它带有一个隐藏的侧边栏,我很乐意在我的应用程序中使用类似的东西。它看起来有点像火狐手机的侧边栏...
除了重新实现ViewPager之外,您还知道如何实现它吗?我尝试过使用 HorizontalScrollView,但这也会导致它重新实现...
除了这两种方式之外,我没有看到任何其他方式...有什么建议吗?
提前致谢
我想出了一个解决方案...我不知道它是否完美,但它工作得很好。
因此,我所做的是一个单一的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