我正在使用相对较新的CoordinatorLayout
,以及AppBarLayout
和Toolbar
。布局非常简单,布局的行为是向上滚动时隐藏Toolbar
,向下滚动时显示Toolbar
。
布局的XML:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
android:id="@+id/main_content_coordinate_layout"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.design.widget.AppBarLayout
android:id="@+id/main_content_app_bar_layout"
android:layout_width="match_parent"
android:layout_height="@dimen/action_bar_height"
android:fitsSystemWindows="true">
<android.support.v7.widget.Toolbar
android:id="@+id/main_content_toolbar_layout"
app:title="@string/app_name"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>
</android.support.design.widget.AppBarLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
app:layout_anchor="@id/main_content_app_bar_layout"
app:layout_anchorGravity="bottom"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<android.support.v7.widget.RecyclerView
android:id="@+id/main_content_media_navigation_recycler_view"
android:padding="@dimen/activity_vertical_margin_0.50"
android:layout_width="match_parent"
android:layout_height="@dimen/action_bar_height"/>
<FrameLayout
android:id="@+id/main_content_container"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
</android.support.design.widget.CoordinatorLayout>
问题
当Toolbar
可见时,我看到CPU性能下降了大约10-15%,但是滚动时Toolbar
已经滚出屏幕,或者直观地看到了这个效果,这个下降到0-1%。我删除了子CoordinatorLayout
项(RecyclerView
&amp; FrameLayout
),但这仍然有效。我也尝试改变AppBarLayout
和Toolbar
的行为,这也没有效果。
下图显示了工具栏可见时的CPU性能,然后是不可见的。
我知道CoordinatorLayout
和行为需要额外的处理和cpu周期,但这似乎过分了。其他人是否一起使用CoordinatorLayout
,AppbarLayout
和Toolbar
来体验这种性能?
额外信息
这些CPU数据来自OnePlus 3,因此手机价格较高,我显而易见的担心是中低端设备的性能(目前我没有任何测试,模拟器测试不会削减为此目的)。