Мое приложение отлично работает на новых, мощных устройствах, но у меня проблемы с производительностью c на старых устройствах. Когда я проводю прямо в моем приложении, анимация очень плавная. Тем не менее, когда я перемещаюсь к своему первому фрагменту (или когда я нажимаю кнопку, которая автоматически перемещается к первому фрагменту), анимация медленная и медленная.
Когда появляется эта проблема?
Она появляется только в том случае, если заполнен мой RecyclerView
в первом фрагменте с пользовательскими элементами.
Что же произошло Я пытаюсь?
Я изменил родительский макет RecyclerView
с Linear
на ConstraintLayout
, что, похоже, не является проблемой. Я также изменил родительский макет элементов, чтобы он был ConstraintLayout
. Я также установил предел вне экрана ViewPager
для своих нужд.
viewPager.setOffscreenPageLimit(4);
Возможно, что рябь или изображение предмета слишком тяжелы для старых устройств, но я не думаю, что это будет проблемой.
Проблема должна быть где-то в RecyclerView
или в пользовательском элементе, но я не нашел его.
Фрагмент кода RecyclerView первого фрагмента:
userRecyclerView = rootView.findViewById(R.id.recyclerViewUsers);
usersRecyclerViewAdapter = new UsersAdapter(accountHolders);
userRecyclerView.setAdapter(usersRecyclerViewAdapter);
userRecyclerView.setNestedScrollingEnabled(false);
userRecyclerView.setAnimation(null);
//LayoutManager invokes the onCreateViewHolder method in MyAdapter
LinearLayoutManager llm = new LinearLayoutManager(getActivity());
//StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
userRecyclerView.setLayoutManager(llm);
И мои XML пользовательских элементов:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/usernameConstraintLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<androidx.cardview.widget.CardView
android:id="@+id/cardViewUser"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:background="@drawable/round_corner"
card_view:cardCornerRadius="20dp"
card_view:layout_constraintBottom_toBottomOf="parent"
card_view:layout_constraintStart_toStartOf="parent"
card_view:layout_constraintTop_toTopOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textViewUser"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="10dp"
android:layout_marginBottom="8dp"
android:maxLines="1"
android:text=""
android:textColor="@color/colorMaterialBlue"
android:textSize="16sp"
android:textStyle="bold"
card_view:layout_constraintBottom_toBottomOf="parent"
card_view:layout_constraintEnd_toStartOf="@+id/imageViewDelete"
card_view:layout_constraintStart_toStartOf="parent"
card_view:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/imageViewDelete"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="10dp"
android:layout_marginBottom="8dp"
android:background="?android:attr/selectableItemBackground"
android:src="@drawable/delete"
card_view:layout_constraintBottom_toBottomOf="parent"
card_view:layout_constraintEnd_toEndOf="parent"
card_view:layout_constraintHorizontal_bias="1.0"
card_view:layout_constraintStart_toStartOf="parent"
card_view:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>