Android Facebook风格的幻灯片
新的Facebook应用程序及其导航非常酷。 我只是想看看如何在我的应用程序中模拟它。
任何人都知道如何实现?
单击页面左上angular的button,显示以下屏幕:
YouTubevideo
我自己也玩过这个游戏,我能find的最好方法是使用FrameLayout,并在菜单上放置一个自定义的HorizontalScrollView(HSV)。 在HSV内部是你的应用程序视图, 但有一个透明的View作为第一个孩子。 这意味着,当HSV具有零滚动偏移量时,菜单将显示通过(并且仍然可以令人惊讶地点击)。
当应用程序启动时,我们将HSV滚动到第一个可见应用程序视图的偏移量,当我们想要显示菜单时,我们通过透明视图向后滚动显示菜单。
代码在这里,Launch中的最下面两个button(叫做HorzScrollWithListMenu和HorzScrollWithImageMenu)显示了我能想到的最好的菜单:
Android滑动菜单演示
模拟器截图(中间滚动):
从设备截图(全卷)。 请注意,我的图标不像Facebook菜单图标那样宽,所以菜单视图和“应用程序”视图不alignment。
我已经在这个库项目中实现了像Facebook一样的滑出式导航。
您可以轻松将其构build到您的应用程序,用户界面和导航中。 你只需要实现一个活动和一个片段,让图书馆知道它 – 图书馆将提供所有想要的animation和导航。
在回购里面你可以finddemo-project,以及如何使用lib来实现类似Facebook的导航。 这里是演示项目logging的简短video 。
另外这个库应该兼容这个ActionBar模式,因为它基于活动事务和TranslateAnimations(而不是Fragments事务和自定义视图)。
目前来说,最大的问题是使其在应用程序中运行良好,支持纵向和横向模式。 如果您有任何意见,请通过github提供。
祝一切顺利,
亚历克斯
这是另一个 lib,似乎是我认为最好的。 我没有写
更新:
这段代码似乎对我来说效果最好,它移动了整个Actionbar,类似于G +应用程序。
Google如何设法做到这一点? 在Android应用程序中滑动ActionBar
我认为Facebook应用程序不是用本机代码编写的(我的意思是说,在Android中使用布局),但是他们已经使用了webview,并使用了一些JavaScript UI库,如sencha 。 使用sencha框架可以轻松实现。
这是又一个(非常好的)开源库!
关于这一点的好处是可以很容易地与ActionBarSherlock集成。
这是github项目链接
这是Google Play下载链接
我刚刚为自己的项目实施了类似的观点。 你可以在这里查看
这里是基于库的示例应用程序的屏幕我写道:
这个自定义视图很容易作为XML布局的元素。 这里是例子:
<shared.ui.actionscontentview.ActionsContentView android:id="@+id/content" android:layout_width="match_parent" android:layout_height="match_parent" app:actions_layout="@layout/actions" app:content_layout="@layout/content" />
我会对ActionsContentView库的使用有任何疑问我可以在项目Wiki上写一篇小文章。
这个库的一些优点:
- 通过触摸来滑动视图的能力
- 在XML中调整动作栏的大小是很容易的
- 支持从2.0开始的所有Android SDK版本
有一个限制:
- 所有水平滚动视图将不会在这个视图的边界
最好的问候,史蒂文
使用Android支持包版本13(2013年5月),可以使用DrawerLayout创build可以从窗口边缘拉入的导航抽屉。 而且,导航抽屉现在是一种devise模式。
v4支持库
导航抽屉devise模式
做了一个现有实现的综述,并把它变成一个图书馆项目加上示例应用程序。 还添加了XMLparsing以及自动检测可能存在的操作栏,所以它可以与本地以及支持操作栏(如ActionBarSherlock)一起使用。
这一个也滑动的行动吧!
整个事情是一个图书馆项目连同一个示例应用程序,并介绍了Android的滑动菜单,如谷歌和Facebook的应用程序 。 感谢scirocco最初的想法和代码!
这是简单而优雅的: https : //github.com/akotoe/android-slide-out-menu.git
快照:
我觉得图书馆没有提到:
jfeinstein10 / SlidingMenu
github url:
https://github.com/jfeinstein10/SlidingMenu
github url:
https://github.com/jfeinstein10/SlidingMenu
- 与行动条ActionBarSherlock工作正常,这有助于向后兼容性 !
- 支持右滑动 ,不仅通过button滑动!
无法评论@Paul Grime给出的答案,无论如何,我已经提交了他的github项目的闪烁问题的修复….
我会在这里发布修复,也许有人需要它。 你只需要添加两行代码。 anim.setAnimationListener调用下面的第一个:
anim.setFillAfter(true);
而app.layout()调用后的第二个:
app.clearAnimation();
希望这可以帮助 :)
我用AbsoluteLayout和一个简单的幻灯片控制器来实现这一点,它将视图移动到一个负的偏移来隐藏。
如果有人有兴趣,我可以清理代码/布局和发布。 我知道AbsoluteLayout已被弃用,但这是一个非常简单的实现。 左视图/右视图,当“滑动打开”时,只需将左视图从-X偏移量移动到设备宽度,无论您想要显示的右视图
你好,这是最好的示例演示应用程序,它提供了像滑动菜单的facebook 在这里检查代码
作为我的Android公共库(ACL)的一部分,我实现了自己的SideBar。 主要优点:
- 侧栏可以设置为任意位置:左,上,下,右
- 主视图和滑动视图均可点击
- 侧栏可以部分显示
- SideBar的Stylable属性更容易改变它的风格
- 神器回购
- 大型图书馆的一部分
源代码: https : //github.com/serso/android-common/tree/master/views/src/main/java/org/solovyev/android/view/sidebar
用法: https : //github.com/service/android-common/blob/master/samples/res/layout/acl_view_layout.xml
最近我已经在我的滑动菜单实现版本上工作。 它使用stream行的J.Feinstein Android库SlidingMenu。
请检查GitHub上的源代码:
https://github.com/baruckis/Android-SlidingMenuImplementation
直接下载应用程序到设备尝试:
https://play.google.com/store/apps/details?id=com.baruckis.SlidingMenuImplementation
代码应该是不言自明的,因为评论。 我希望这会有所帮助! ;)
我find了一个最简单的方法和工作。 使用简单的导航抽屉,并调用drawer.setdrawerListner()并在下面的drawerSlide方法中使用mainView.setX()方法或复制我的代码。
xml文件
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#000000" > <RelativeLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ffffff"> <ImageView android:layout_width="40dp" android:layout_height="40dp" android:id="@+id/menu" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_marginTop="10dp" android:layout_marginLeft="10dp" android:src="@drawable/black_line" /> </RelativeLayout> <RelativeLayout android:id="@+id/left_drawer" android:layout_width="200dp" android:background="#181D21" android:layout_height="match_parent" android:layout_gravity="start" > </RelativeLayout> </android.support.v4.widget.DrawerLayout>
java文件
public class MainActivity extends AppCompatActivity { DrawerLayout drawerLayout; RelativeLayout mainView; ImageView menu; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); menu=(ImageView)findViewById(R.id.menu); drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mainView=(RelativeLayout)findViewById(R.id.content_frame); menu.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { drawerLayout.openDrawer(Gravity.LEFT); } }); drawerLayout.setDrawerListener(new DrawerLayout.DrawerListener() { @Override public void onDrawerSlide(View drawerView, float slideOffset) { mainView.setX(slideOffset * 300); } @Override public void onDrawerOpened(View drawerView) { } @Override public void onDrawerClosed(View drawerView) { } @Override public void onDrawerStateChanged(int newState) { } }); } }
谢谢
我要在这里做一些大胆的猜测
我假设他们有一个代表不可见的菜单的布局。 当点击菜单button时,它们将顶部的布局/视图设置为animation,以简化菜单布局的可视性。 我还没有想到这会在视图中引起任何types的Z-索引问题,或者它们如何控制这些问题。
这里是在官方的android文档中find的devise和开发指南,不需要添加非官方的外部库。 只有android支持库会做。 在这里find链接。
devise和开发 。
Facebook的Android应用程序可能与碎片build立。 菜单是一个片段,深入的Activity(Newsfeed / Events / Friends等)是另一个片段。 在手机上基本上是平板电脑的“主要和细节”布局。
有关详细信息,由于兼容性库以1.6开头,并且此应用也在Android 1.5的设备上运行,所以无法使用Fragments。
您可以这样做的方法是:创build一个“基本”活动BaseMenuActivity,其中将onItemClickListener的所有逻辑放置在菜单列表中,并定义2animation(“打开”和“closures”)。 在animation结束/开始时,您将显示/隐藏BaseMenuActivity的布局(让我们称之为menu_layout)。 这个活动的布局很简单,只有一个列表项目右边是一个透明部分。 这部分是可点击的,其宽度将与“移动button”的宽度相同。 这样,你就可以点击这个布局来开始animation,让content_layout向左滑动,并把整个屏幕。 对于每个选项(即菜单列表的项目),您创build一个扩展BaseMenuActivity的“ContentActivity”。 然后,当您点击列表中的一个项目时,您将开始您的ItemSelectedContentActivity,菜单可见(只要您的活动开始,您将立即closures该菜单)。 每个ContentActivity的布局都是FrameLayout,并包含和。 您只需要移动content_layout,并在需要时使menu_layout可见。
这是一个办法,我希望我已经清楚了。
过去几天我一直在玩这个游戏,最后我提出了一个非常简单的解决scheme,这个解决scheme在Honeycomb之前就可以运行。 我的解决scheme是为我要滑动的视图(为我的FrameLayout
)设置animation效果,并侦听animation的结尾(在哪个点上偏移视图的左/右位置)。 我在这里粘贴了我的解决scheme: 如何为View的翻译添加animation
经过几个小时的search,我发现Paul Grime的解决scheme可能是最好的。 但它有太多的function。 所以初学者可能很难学习。 所以我想提供一个来自Paul的想法的实现,但它更简单,应该易于阅读。
通过使用没有XML的java代码来实现侧面菜单栏
我没有看到在上面的答案的任何地方提到的惊人的SimonVT / android-menudrawer。 所以这里有一个链接
https://github.com/SimonVT/android-menudrawer
它的超级简单易用,可以放在左侧,右侧,顶部或底部。 很好地logging了示例代码和Apache 2.0许可证。
Android添加了导航抽屉。 参考这个
链接
2012年6月, Google在Eclipse ADT插件中添加了“模板” ,并且有一个名为“主/细节stream程”的模板,它完全符合(基于fragmets)