Я занимаюсь разработкой приложения для Android, которое содержит фрагмент. Этот фрагмент выглядит как фрагмент воспроизведения видео на YouTube. Все шло хорошо, но теперь я столкнулся с проблемой использования памяти.
Мне нужно изменить поле для анимации. Для этого я использую слушатель прокрутки, чтобы получить координаты между 0 и 1. Вот как я устанавливаю поле моего макета:
void setMargin(View view1, int top) {
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) view1.getLayoutParams();
params.topMargin = top;
view1.requestLayout();
}
@Override
public void onSlide(@NonNull View bottomSheet, float slideOffset) {
if (slideOffset >= 0) {
int ii = (int) (height * (1 - slideOffset) + (playerViewFirstHeight * slideOffset));
setMargin(frame_middle, ii);
} else { }
}
Мое мнение таково.
<FrameLayout
android:id="@+id/frame_middle"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="200dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/frame_header">
<ProgressBar
android:id="@+id/progressB_frame_middle_fr_playing"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
<android.support.v4.widget.NestedScrollView
android:id="@+id/scrollV_frame_middle_fr_playing"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/frame_header">
<LinearLayout
android:id="@+id/linearL_frame_middle_fr_playing"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusableInTouchMode="true"
android:orientation="vertical">
<android.support.constraint.ConstraintLayout
android:id="@+id/constraintL_video_information"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="8dp">
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:orientation="horizontal"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView6">
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:tint="#757575"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textV_published_at"
app:srcCompat="@drawable/ic_thumb_up_black_24dp" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_weight="1"
app:layout_constraintBottom_toBottomOf="@+id/imageView"
app:layout_constraintStart_toEndOf="@+id/imageView" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="8dp"
android:layout_weight="1"
android:tint="#757575"
app:layout_constraintBottom_toBottomOf="@+id/textView4"
app:layout_constraintStart_toEndOf="@+id/textView4"
app:srcCompat="@drawable/ic_thumb_down_black_24dp" />
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_weight="1"
app:layout_constraintBottom_toBottomOf="@+id/imageView2"
app:layout_constraintStart_toEndOf="@+id/imageView2" />
</LinearLayout>
<ImageView
android:id="@+id/imageV_whatsapp"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:tint="#757575"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:srcCompat="@drawable/ic_share_black_24dp" />
<TextView
android:id="@+id/textV_video_category"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:textColor="@color/colorAccent"
app:layout_constraintBottom_toBottomOf="@+id/textView6"
app:layout_constraintStart_toEndOf="@+id/textView6"
app:layout_constraintTop_toTopOf="@+id/textView6" />
<TextView
android:id="@+id/textV_video_channel_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textV_video_title" />
<TextView
android:id="@+id/textV_video_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:gravity="center_vertical"
android:textColor="@android:color/black"
android:textSize="18sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view2"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="8dp"
android:background="#e0e0e0"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/linearLayout" />
<ImageView
android:id="@+id/imageV_download"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:tint="#757575"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/imageV_whatsapp"
app:srcCompat="@drawable/ic_download_button" />
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textV_video_channel_name" />
</android.support.constraint.ConstraintLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="4dp"
android:textColor="@android:color/black" />
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerV_related_videos"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/textView" />
</RelativeLayout>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
</FrameLayout>
Подводя итог, я запускаю описанный выше метод много раз при прокрутке. Таким образом, использование памяти значительно увеличивается. Несмотря на уничтожение этого фрагмента, использование памяти остается почти таким же. Мне кажется, моя точка зрения прорисовывается много раз и не очищает себя от предыдущих случаев.
Я не мог найти никакого решения для этого, и мне действительно нужны ваши идеи.
Заранее спасибо.