实现像导航抽屉一样的Gmail平板电脑

我正在研究Gmail应用程序的平板电脑devise。 在那个Navigation Drawer实施是不同于其他。 我已附上图片供您参考。

在这里输入图像说明

而且当我展开抽屉时,它应该像正常的导航抽屉行为一样发生。

在这里输入图像说明

我想以相同的方式执行。 我正在寻找,但我发现只有这个链接哪个不是那么有用。 任何人都可以给我build议,我怎么能做到这一点!

Solutions Collecting From Web of "实现像导航抽屉一样的Gmail平板电脑"

您可以在主窗格上使用具有边距的SlidingPaneLayout ,为交叉渐变使用自定义侦听器。

 <com.sqisland.android.CrossFadeSlidingPaneLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/sliding_pane_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayout android:layout_width="240dp" android:layout_height="match_parent" android:background="@color/purple"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="@string/full"/> <TextView android:layout_width="64dp" android:layout_height="match_parent" android:background="@color/blue" android:text="@string/partial"/> </FrameLayout> <TextView android:layout_width="400dp" android:layout_height="match_parent" android:layout_weight="1" android:layout_marginLeft="64dp" android:background="@color/light_blue" android:text="@string/pane_2"/> </com.sqisland.android.CrossFadeSlidingPaneLayout> 

子类SlidingPaneLayout并在onFinishInflate查找部分窗格和完整窗格:

 protected void onFinishInflate() { super.onFinishInflate(); if (getChildCount() < 1) { return; } View panel = getChildAt(0); if (!(panel instanceof ViewGroup)) { return; } ViewGroup viewGroup = (ViewGroup) panel; if (viewGroup.getChildCount() != 2) { return; } fullView = viewGroup.getChildAt(0); partialView = viewGroup.getChildAt(1); super.setPanelSlideListener(crossFadeListener); } 

使用侦听器更改完整窗格和部分窗格的Alpha:

 private SimplePanelSlideListener crossFadeListener = new SimplePanelSlideListener() { public void onPanelSlide(View panel, float slideOffset) { super.onPanelSlide(panel, slideOffset); if (partialView == null || fullView == null) { return; } partialView.setVisibility(isOpen() ? View.GONE : VISIBLE); partialView.setAlpha(1 - slideOffset); fullView.setAlpha(slideOffset); } }; 

另外,打开布局时隐藏部分窗格。

 protected void onLayout( boolean changed, int l, int t, int r, int b) { super.onLayout(changed, l, t, r, b); if (partialView != null) { partialView.setVisibility(isOpen() ? View.GONE : VISIBLE); } } 

更多信息: http : //blog.sqisland.com/2015/01/partial-slidingpanelayout.html