新的Facebook应用程序和它的导航太酷了。我只是想看看如何在我的应用程序中模仿它。

有人知道怎么实现吗?

点击左上角按钮,页面滑动,显示如下画面:

YouTube视频


当前回答

我在过去的几天里一直在玩这个,我已经提出了一个解决方案,这是相当直接的,在pre-Honeycomb。我的解决方案是动画我想要滑动的视图(FrameLayout为我),并监听动画的结束(在这一点上抵消视图的左/右位置)。我在这里粘贴了我的解决方案:如何动画一个视图的翻译

其他回答

我找到了一个最简单的方法。使用简单的导航抽屉并调用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) {

        }
    });
 }
}

谢谢你!

这是另一个lib,在我看来似乎是最好的。不是我写的。

更新:

这段代码似乎最适合我,它移动整个动作栏类似于G+应用程序。

谷歌是如何做到这一点的?在Android应用程序中滑动动作栏

我在这个库项目中实现了类似facebook的滑出导航。

你可以很容易地将它构建到你的应用程序、UI和导航中。你只需要实现一个活动和一个片段,让库知道它-库将提供所有想要的动画和导航。

在repo中,你可以找到demo-project,以及如何使用库来实现类似facebook的导航。这是演示项目的短视频。

此外,这个库应该兼容这个ActionBar模式,因为它是基于Activities事务和TranslateAnimations(而不是Fragments事务和自定义视图)。

目前,最大的问题是如何让它在支持纵向和横向模式的应用程序中很好地工作。如果你有任何反馈,请通过github提供。

愿一切都好! 亚历克斯

最近我在开发我的滑动菜单实现版本。它使用流行的J.Feinstein Android库SlidingMenu。

请在GitHub上查看源代码:

https://github.com/baruckis/Android-SlidingMenuImplementation

直接下载app到设备上尝试:

https://play.google.com/store/apps/details?id=com.baruckis.SlidingMenuImplementation

由于注释,代码应该是自解释的。希望对大家有所帮助!;)

我刚刚为我自己的项目实现了类似的视图。你可以在这里查看

下面是基于我写的库的示例应用程序的屏幕:

使用这个自定义视图作为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版本

但有一个限制:

所有水平滚动视图都不能在此视图的边界上工作

最好的问候, 史蒂文