导航抽屉多个容器和最佳实践

5 android ui-patterns android-layout android-fragments navigation-drawer

我在Android UI开发方面相对较新.所以我需要更有经验的开发人员的帮助.
我正在创建我的应用程序Navigation Drawer,我遇到了很多问题.
首先,这是导航抽屉的示例代码.

<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">
    <!-- The main content view -->
    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    <!-- The navigation drawer -->
    <ListView android:id="@+id/left_drawer"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:choiceMode="singleChoice"
        android:divider="@android:color/transparent"
        android:dividerHeight="0dp"
        android:background="#111"/>
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)

这是官方网站的简单示例.

主内容视图(上面的FrameLayout)必须是DrawerLayout中的第一个子节点,因为XML顺序意味着z-ordering,抽屉必须位于内容之上.

在此示例中,有两个嵌套视图:FrameLayout如前所述,用于存储主内容和ListView表示NavigationDrawer菜单.

所以这是我的问题.

  1. 真正的应用程序在整个Activity上没有一个视图.主要是Activity有很多不同的视图,并且有几个片段可以使UI更具响应性并为用户提供更好的用户体验.我的活动当然是不同的观点和片段(相同活动的目的是什么?:)).One Activity只有一个片段,另一个片段有几个片段,所以它们都是不同的...在前面的代码示例中,只有一个FrameLayout容器可以容纳Fragment ONLY ONE片段,如果我的Activity有两个,三个或更多,我必须做什么片段?在这种情况下,最佳解决方案是什么.
  2. 正如我所描述的,我的应用程序有多个活动,因此我的导航抽屉必须(根据Android UI实践)在每个活动上让用户导航到应用程序的顶级元素.在这种情况下,最好有一个BaseActivity(我已经在stackoverflow上阅读了答案),它将保存所有配置的东西NavigationDrawer.但就导航抽屉需要DrawerLayout在XML布局中的活动而言,BaseActivity应该调用setContentView方法.并且从BaseActivity活动继承的所有内容都应该做一些设置自己布局的技巧,否则覆盖这个方法没有意义,因为它会打破所有逻辑.在这种情况下该怎么办?
  3. 什么是创建自定义导航抽屉列表的最有效方法,如在谷歌+或YouTube中,而不使用复杂的视图层次结构,这使GPU工作努力,并可能带来用户不良的体验

对于第二个问题,我有一些想法如何解决这个问题,但不知道它是正确的方法,哪种方法更好.
第一个想法是实现TemplateMethod模式.在BaseActivity类似的东西中创建方法setupCustomViewGroup()并在所有活动中覆盖它从xml中膨胀所需的视图组并从此方法返回它,而不是在膨胀整个视图中使用它.

或者明确地向Activity添加视图,使用merge和include标记.

但同样,这只对整个活动或一个片段有用,如果我们有更多片段,使用嵌套片段怎么办,我认为这是个坏主意.

此外,我的目标是优化视图层次结构,使其快速高效,以便在旧设备上实现平滑.

对于能够描述或建议在这种情况下遵循最有效和正确的方法来使UI响应和代码可读的人,我将非常感激.

谢谢.