Проблемы с производительностью при перелистывании в ViewPager - PullRequest
0 голосов
/ 30 апреля 2020

Мое приложение отлично работает на новых, мощных устройствах, но у меня проблемы с производительностью 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>

...