diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadLabelsScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadLabelsScene.java index 3d4dd05b8..49b2a5e73 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadLabelsScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadLabelsScene.java @@ -147,7 +147,11 @@ public class DownloadLabelsScene extends ToolbarScene { public void onDestroyView() { super.onDestroyView(); - mRecyclerView = null; + if (null != mRecyclerView) { + mRecyclerView.stopScroll(); + mRecyclerView = null; + } + mViewTransition = null; mAdapter = null; } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.java index 19ffd3886..fe7ca6d53 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.java @@ -420,6 +420,10 @@ public class DownloadsScene extends ToolbarScene ViewUtils.removeFromParent(mShowcaseView); mShowcaseView = null; } + if (null != mRecyclerView) { + mRecyclerView.stopScroll(); + mRecyclerView = null; + } mRecyclerView = null; mFabLayout = null; diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.java index bd177150f..4a2d0d321 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.java @@ -405,8 +405,11 @@ public class FavoritesScene extends BaseScene implements } mHelper = null; } + if (null != mRecyclerView) { + mRecyclerView.stopScroll(); + mRecyclerView = null; + } - mRecyclerView = null; mSearchBar = null; mFabLayout = null; diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.java index 093f087d6..aded3a277 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.java @@ -78,6 +78,7 @@ public final class GalleryCommentsScene extends ToolbarScene private String mToken; private GalleryComment[] mComments; + private EasyRecyclerView mRecyclerView; private FloatingActionButton mFab; private View mEditPanel; private ImageView mSendImage; @@ -138,7 +139,7 @@ public final class GalleryCommentsScene extends ToolbarScene public View onCreateView2(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.scene_gallery_comments, container, false); - EasyRecyclerView recyclerView = (EasyRecyclerView) view.findViewById(R.id.recycler_view); + mRecyclerView = (EasyRecyclerView) view.findViewById(R.id.recycler_view); TextView tip = (TextView) ViewUtils.$$(view, R.id.tip); mEditPanel = ViewUtils.$$(view, R.id.edit_panel); mSendImage = (ImageView) ViewUtils.$$(mEditPanel, R.id.send); @@ -155,25 +156,25 @@ public final class GalleryCommentsScene extends ToolbarScene tip.setCompoundDrawables(null, drawable, null, null); mAdapter = new CommentAdapter(); - recyclerView.setAdapter(mAdapter); - recyclerView.setLayoutManager(new LinearLayoutManager(context, + mRecyclerView.setAdapter(mAdapter); + mRecyclerView.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false)); LinearDividerItemDecoration decoration = new LinearDividerItemDecoration( LinearDividerItemDecoration.VERTICAL, context.getResources().getColor(R.color.divider), LayoutUtils.dp2pix(context, 1)); decoration.setShowLastDivider(true); - recyclerView.addItemDecoration(decoration); - recyclerView.setSelector(RippleSalon.generateRippleDrawable(false)); - recyclerView.setHasFixedSize(true); - recyclerView.setOnItemClickListener(this); - recyclerView.setOnItemLongClickListener(this); - recyclerView.setPadding(recyclerView.getPaddingLeft(), recyclerView.getPaddingTop(), - recyclerView.getPaddingRight(), recyclerView.getPaddingBottom() + paddingBottomFab); + mRecyclerView.addItemDecoration(decoration); + mRecyclerView.setSelector(RippleSalon.generateRippleDrawable(false)); + mRecyclerView.setHasFixedSize(true); + mRecyclerView.setOnItemClickListener(this); + mRecyclerView.setOnItemLongClickListener(this); + mRecyclerView.setPadding(mRecyclerView.getPaddingLeft(), mRecyclerView.getPaddingTop(), + mRecyclerView.getPaddingRight(), mRecyclerView.getPaddingBottom() + paddingBottomFab); mSendImage.setOnClickListener(this); mFab.setOnClickListener(this); - mViewTransition = new ViewTransition(recyclerView, tip); + mViewTransition = new ViewTransition(mRecyclerView, tip); if (mComments == null || mComments.length <= 0) { mViewTransition.showView(1); @@ -187,6 +188,12 @@ public final class GalleryCommentsScene extends ToolbarScene @Override public void onDestroyView() { super.onDestroyView(); + + if (null != mRecyclerView) { + mRecyclerView.stopScroll(); + mRecyclerView = null; + } + mAdapter = null; mViewTransition = null; } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryInfoScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryInfoScene.java index 2f176218a..5ffa117e6 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryInfoScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryInfoScene.java @@ -57,6 +57,9 @@ public final class GalleryInfoScene extends ToolbarScene implements EasyRecycler @Nullable private ArrayList mValues; + @Nullable + private EasyRecyclerView mRecyclerView; + @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -156,19 +159,19 @@ public final class GalleryInfoScene extends ToolbarScene implements EasyRecycler Context context = getContext2(); AssertUtils.assertNotNull(context); - EasyRecyclerView recyclerView = (EasyRecyclerView) ViewUtils.$$(view, R.id.recycler_view); + mRecyclerView = (EasyRecyclerView) ViewUtils.$$(view, R.id.recycler_view); InfoAdapter adapter = new InfoAdapter(); - recyclerView.setAdapter(adapter); - recyclerView.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false)); + mRecyclerView.setAdapter(adapter); + mRecyclerView.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false)); LinearDividerItemDecoration decoration = new LinearDividerItemDecoration( LinearDividerItemDecoration.VERTICAL, context.getResources().getColor(R.color.divider), LayoutUtils.dp2pix(context, 1)); decoration.setPadding(context.getResources().getDimensionPixelOffset(R.dimen.keyline_margin)); - recyclerView.addItemDecoration(decoration); - recyclerView.setSelector(RippleSalon.generateRippleDrawable(false)); - recyclerView.setClipToPadding(false); - recyclerView.setHasFixedSize(true); - recyclerView.setOnItemClickListener(this); + mRecyclerView.addItemDecoration(decoration); + mRecyclerView.setSelector(RippleSalon.generateRippleDrawable(false)); + mRecyclerView.setClipToPadding(false); + mRecyclerView.setHasFixedSize(true); + mRecyclerView.setOnItemClickListener(this); return view; } @@ -179,6 +182,16 @@ public final class GalleryInfoScene extends ToolbarScene implements EasyRecycler setNavigationIcon(R.drawable.v_arrow_left_dark_x24); } + @Override + public void onDestroyView() { + super.onDestroyView(); + + if (null != mRecyclerView) { + mRecyclerView.stopScroll(); + mRecyclerView = null; + } + } + @Override public boolean onItemClick(EasyRecyclerView parent, View view, int position, long id) { Context context = getContext2(); diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java index 11dbda729..dc1a3d6b4 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java @@ -452,7 +452,7 @@ public final class GalleryListScene extends BaseScene ViewUtils.removeFromParent(mShowcaseView); mShowcaseView = null; } - + SimpleHandler.getInstance().removeCallbacks(mReturnSearchBarRunnable); if (null != mSearchBarMover) { mSearchBarMover.cancelAnimation(); mSearchBarMover = null; @@ -467,8 +467,11 @@ public final class GalleryListScene extends BaseScene } mHelper = null; } + if (null != mRecyclerView) { + mRecyclerView.stopScroll(); + mRecyclerView = null; + } - mRecyclerView = null; mSearchLayout = null; mSearchBar = null; mFab = null; diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryPreviewsScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryPreviewsScene.java index 679c48797..0a92b8cb3 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryPreviewsScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryPreviewsScene.java @@ -76,6 +76,8 @@ public class GalleryPreviewsScene extends ToolbarScene implements EasyRecyclerVi View life cycle ---------------*/ @Nullable + private EasyRecyclerView mRecyclerView; + @Nullable private GalleryPreviewAdapter mAdapter; @Nullable private GalleryPreviewHelper mHelper; @@ -131,23 +133,23 @@ public class GalleryPreviewsScene extends ToolbarScene implements EasyRecyclerVi ContentLayout contentLayout = (ContentLayout) inflater.inflate( R.layout.scene_gallery_previews, container, false); contentLayout.hideFastScroll(); - EasyRecyclerView recyclerView = contentLayout.getRecyclerView(); + mRecyclerView = contentLayout.getRecyclerView(); Context context = getContext2(); AssertUtils.assertNotNull(context); Resources resources = context.getResources(); mAdapter = new GalleryPreviewAdapter(); - recyclerView.setAdapter(mAdapter); + mRecyclerView.setAdapter(mAdapter); int columnWidth = resources.getDimensionPixelOffset(R.dimen.preview_grid_column_width); AutoGridLayoutManager layoutManager = new AutoGridLayoutManager(context, columnWidth); layoutManager.setStrategy(AutoGridLayoutManager.STRATEGY_SUITABLE_SIZE); - recyclerView.setLayoutManager(layoutManager); + mRecyclerView.setLayoutManager(layoutManager); int padding = LayoutUtils.dp2pix(context, 4); - recyclerView.setPadding(padding, padding, padding, padding); - recyclerView.setClipToPadding(false); - recyclerView.addItemDecoration(new MarginItemDecoration(padding)); - recyclerView.setOnItemClickListener(this); + mRecyclerView.setPadding(padding, padding, padding, padding); + mRecyclerView.setClipToPadding(false); + mRecyclerView.addItemDecoration(new MarginItemDecoration(padding)); + mRecyclerView.setOnItemClickListener(this); mHelper = new GalleryPreviewHelper(); contentLayout.setHelper(mHelper); @@ -171,6 +173,10 @@ public class GalleryPreviewsScene extends ToolbarScene implements EasyRecyclerVi } mHelper = null; } + if (null != mRecyclerView) { + mRecyclerView.stopScroll(); + mRecyclerView = null; + } mAdapter = null; } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/HistoryScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/HistoryScene.java index f45ddb71d..841216c6b 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/HistoryScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/HistoryScene.java @@ -76,6 +76,8 @@ public class HistoryScene extends ToolbarScene View life cycle ---------------*/ @Nullable + private EasyRecyclerView mRecyclerView; + @Nullable private ViewTransition mViewTransition; @Nullable private RecyclerView.Adapter mAdapter; @@ -93,7 +95,7 @@ public class HistoryScene extends ToolbarScene @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.scene_history, container, false); View content = ViewUtils.$$(view, R.id.content); - EasyRecyclerView recyclerView = (EasyRecyclerView) ViewUtils.$$(content, R.id.recycler_view); + mRecyclerView = (EasyRecyclerView) ViewUtils.$$(content, R.id.recycler_view); FastScroller fastScroller = (FastScroller) ViewUtils.$$(content, R.id.fast_scroller); TextView tip = (TextView) ViewUtils.$$(view, R.id.tip); mViewTransition = new ViewTransition(content, tip); @@ -113,25 +115,25 @@ public class HistoryScene extends ToolbarScene mAdapter = new HistoryAdapter(); mAdapter.setHasStableIds(true); mAdapter = swipeManager.createWrappedAdapter(mAdapter); - recyclerView.setAdapter(mAdapter); + mRecyclerView.setAdapter(mAdapter); final GeneralItemAnimator animator = new SwipeDismissItemAnimator(); animator.setSupportsChangeAnimations(false); - recyclerView.setItemAnimator(animator); + mRecyclerView.setItemAnimator(animator); LinearLayoutManager layoutManager = new LinearLayoutManager(context); - recyclerView.setLayoutManager(layoutManager); - recyclerView.setSelector(RippleSalon.generateRippleDrawable(false)); - recyclerView.setDrawSelectorOnTop(true); - recyclerView.hasFixedSize(); - recyclerView.setClipToPadding(false); - recyclerView.setOnItemClickListener(this); - recyclerView.setOnItemLongClickListener(this); + mRecyclerView.setLayoutManager(layoutManager); + mRecyclerView.setSelector(RippleSalon.generateRippleDrawable(false)); + mRecyclerView.setDrawSelectorOnTop(true); + mRecyclerView.hasFixedSize(); + mRecyclerView.setClipToPadding(false); + mRecyclerView.setOnItemClickListener(this); + mRecyclerView.setOnItemLongClickListener(this); int paddingH = resources.getDimensionPixelOffset(R.dimen.list_content_margin_h); int paddingV = resources.getDimensionPixelOffset(R.dimen.list_content_margin_v); - recyclerView.setPadding(paddingV, paddingH, paddingV, paddingH); - guardManager.attachRecyclerView(recyclerView); - swipeManager.attachRecyclerView(recyclerView); + mRecyclerView.setPadding(paddingV, paddingH, paddingV, paddingH); + guardManager.attachRecyclerView(mRecyclerView); + swipeManager.attachRecyclerView(mRecyclerView); - fastScroller.attachToRecyclerView(recyclerView); + fastScroller.attachToRecyclerView(mRecyclerView); HandlerDrawable handlerDrawable = new HandlerDrawable(); handlerDrawable.setColor(ResourcesUtils.getAttrColor(context, R.attr.colorAccent)); fastScroller.setHandlerDrawable(handlerDrawable); @@ -157,6 +159,10 @@ public class HistoryScene extends ToolbarScene mLazyList.close(); mLazyList = null; } + if (null != mRecyclerView) { + mRecyclerView.stopScroll(); + mRecyclerView = null; + } mViewTransition = null; mAdapter = null; diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/QuickSearchScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/QuickSearchScene.java index 23db3b5f3..739fa7202 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/QuickSearchScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/QuickSearchScene.java @@ -66,6 +66,8 @@ public final class QuickSearchScene extends ToolbarScene { View life cycle ---------------*/ @Nullable + private EasyRecyclerView mRecyclerView; + @Nullable private ViewTransition mViewTransition; @Nullable private RecyclerView.Adapter mAdapter; @@ -89,9 +91,9 @@ public final class QuickSearchScene extends ToolbarScene { @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.scene_label_list, container, false); - EasyRecyclerView recyclerView = (EasyRecyclerView) ViewUtils.$$(view, R.id.recycler_view); + mRecyclerView = (EasyRecyclerView) ViewUtils.$$(view, R.id.recycler_view); TextView tip = (TextView) ViewUtils.$$(view, R.id.tip); - mViewTransition = new ViewTransition(recyclerView, tip); + mViewTransition = new ViewTransition(mRecyclerView, tip); Context context = getContext2(); AssertUtils.assertNotNull(context); @@ -118,13 +120,13 @@ public final class QuickSearchScene extends ToolbarScene { mAdapter = adapter; final GeneralItemAnimator animator = new SwipeDismissItemAnimator(); animator.setSupportsChangeAnimations(false); - recyclerView.hasFixedSize(); - recyclerView.setLayoutManager(new LinearLayoutManager(context)); - recyclerView.setAdapter(adapter); - recyclerView.setItemAnimator(animator); - guardManager.attachRecyclerView(recyclerView); - swipeManager.attachRecyclerView(recyclerView); - dragDropManager.attachRecyclerView(recyclerView); + mRecyclerView.hasFixedSize(); + mRecyclerView.setLayoutManager(new LinearLayoutManager(context)); + mRecyclerView.setAdapter(adapter); + mRecyclerView.setItemAnimator(animator); + guardManager.attachRecyclerView(mRecyclerView); + swipeManager.attachRecyclerView(mRecyclerView); + dragDropManager.attachRecyclerView(mRecyclerView); updateView(); @@ -142,6 +144,11 @@ public final class QuickSearchScene extends ToolbarScene { public void onDestroyView() { super.onDestroyView(); + if (null != mRecyclerView) { + mRecyclerView.stopScroll(); + mRecyclerView = null; + } + mViewTransition = null; mAdapter = null; }