If a Recycle view inside in a NestedScrollView, The times of calling recyclerView#onCreateViewHolder() is requal to its data set. When there are large set of apps need to be shown, RecyclerView will need to take many time to call onCreateViewHolder for each item. So, it causes the screen is janky or freeze UI when page is loading large data set. For now, we get rid of NestedScrollView, just use RecycleView and AppBarLayout to have same bahavior for spinner. Fixes: 124384314 Fixes: 123036231 Fixes: 122964660 Fixes: 123088178 Test: 1. Select show system in App info screen. Observe whether there is any janky. 2. Select show system in App info screen, and then change device orientation. Observer whether there is any janky. 3. Go to Settings > Apps & notifications> Advanced > Special app access > Select "battery optimization", and then Tap drop down and select "all apps". Observe whether ther is any janky. Change-Id: Icd65e91eec3b32476d80cc12e9c4baa71151306a
80 lines
3.2 KiB
XML
80 lines
3.2 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- Copyright (C) 2012 The Android Open Source Project
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-->
|
|
|
|
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
xmlns:settings="http://schemas.android.com/apk/res-auto"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="match_parent"
|
|
android:orientation="vertical">
|
|
|
|
<FrameLayout
|
|
android:layout_width="match_parent"
|
|
android:layout_height="match_parent"
|
|
settings:layout_behavior="com.android.settings.widget.FloatingAppBarScrollingViewBehavior">
|
|
|
|
<LinearLayout
|
|
android:id="@+id/list_container"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="match_parent"
|
|
android:orientation="vertical"
|
|
android:visibility="gone">
|
|
|
|
<FrameLayout
|
|
android:layout_width="match_parent"
|
|
android:layout_height="match_parent">
|
|
|
|
<androidx.recyclerview.widget.RecyclerView
|
|
android:id="@+id/apps_list"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="match_parent"
|
|
android:clipToPadding="false"
|
|
settings:fastScrollEnabled="true"
|
|
settings:fastScrollHorizontalThumbDrawable="@drawable/thumb_drawable"
|
|
settings:fastScrollHorizontalTrackDrawable="@drawable/line_drawable"
|
|
settings:fastScrollVerticalThumbDrawable="@drawable/thumb_drawable"
|
|
settings:fastScrollVerticalTrackDrawable="@drawable/line_drawable"/>
|
|
|
|
<TextView
|
|
android:id="@android:id/empty"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="match_parent"
|
|
android:gravity="center"
|
|
android:layout_gravity="center"
|
|
android:text="@string/no_applications"
|
|
android:textAppearance="?android:attr/textAppearanceLarge"
|
|
android:visibility="invisible"/>
|
|
|
|
</FrameLayout>
|
|
|
|
</LinearLayout>
|
|
|
|
<include layout="@layout/loading_container"/>
|
|
|
|
</FrameLayout>
|
|
|
|
<com.google.android.material.appbar.AppBarLayout
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content">
|
|
<FrameLayout
|
|
android:id="@+id/pinned_header"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
settings:layout_scrollFlags="scroll|enterAlways"/>
|
|
</com.google.android.material.appbar.AppBarLayout>
|
|
|
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|