From 452b373f62093801d37e812a30f92e6904efbb4f Mon Sep 17 00:00:00 2001 From: tarsin Date: Sun, 17 Jul 2022 15:33:57 +0800 Subject: [PATCH] Don't use dividers * That's so fucking ugly --- .../LinearDividerItemDecoration.java | 271 ------------------ .../ehviewer/ui/fragment/FilterFragment.kt | 8 - .../ehviewer/ui/fragment/HostsFragment.java | 7 - .../ehviewer/ui/scene/DownloadsScene.java | 7 - .../ehviewer/ui/scene/FavoritesScene.java | 7 - .../ui/scene/GalleryCommentsScene.java | 11 - .../ehviewer/ui/scene/GalleryInfoScene.java | 8 - .../ehviewer/ui/scene/GalleryListScene.java | 7 - .../com/hippo/ehviewer/widget/SearchBar.java | 7 - 9 files changed, 333 deletions(-) delete mode 100644 app/src/main/java/com/hippo/easyrecyclerview/LinearDividerItemDecoration.java diff --git a/app/src/main/java/com/hippo/easyrecyclerview/LinearDividerItemDecoration.java b/app/src/main/java/com/hippo/easyrecyclerview/LinearDividerItemDecoration.java deleted file mode 100644 index b65272737..000000000 --- a/app/src/main/java/com/hippo/easyrecyclerview/LinearDividerItemDecoration.java +++ /dev/null @@ -1,271 +0,0 @@ -/* - * Copyright (C) 2015 Hippo Seven - * - * 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. - */ - -package com.hippo.easyrecyclerview; - -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.Rect; -import android.view.View; - -import androidx.core.view.ViewCompat; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -// Add overlap - -/** - * Only work for {@link androidx.recyclerview.widget.LinearLayoutManager}.
- * Show divider between item, just like - * {@link android.widget.ListView#setDivider(android.graphics.drawable.Drawable)} - */ -public class LinearDividerItemDecoration extends RecyclerView.ItemDecoration { - public static final int HORIZONTAL = LinearLayoutManager.HORIZONTAL; - public static final int VERTICAL = LinearLayoutManager.VERTICAL; - private final Rect mRect; - private final Paint mPaint; - private boolean mShowFirstDivider = false; - private boolean mShowLastDivider = false; - private int mOrientation; - private int mThickness; - private int mPaddingStart = 0; - private int mPaddingEnd = 0; - - private boolean mOverlap = false; - - private ShowDividerHelper mShowDividerHelper; - - public LinearDividerItemDecoration(int orientation, int color, int thickness) { - mRect = new Rect(); - mPaint = new Paint(); - mPaint.setStyle(Paint.Style.FILL); - setOrientation(orientation); - setColor(color); - setThickness(thickness); - } - - public void setShowDividerHelper(ShowDividerHelper showDividerHelper) { - mShowDividerHelper = showDividerHelper; - } - - public void setOrientation(int orientation) { - if (orientation != HORIZONTAL && orientation != VERTICAL) { - throw new IllegalArgumentException("invalid orientation"); - } - mOrientation = orientation; - } - - public void setColor(int color) { - mPaint.setColor(color); - } - - public void setThickness(int thickness) { - mThickness = thickness; - } - - public void setShowFirstDivider(boolean showFirstDivider) { - mShowFirstDivider = showFirstDivider; - } - - public void setShowLastDivider(boolean showLastDivider) { - mShowLastDivider = showLastDivider; - } - - public void setPadding(int padding) { - setPaddingStart(padding); - setPaddingEnd(padding); - } - - public void setPaddingStart(int paddingStart) { - mPaddingStart = paddingStart; - } - - public void setPaddingEnd(int paddingEnd) { - mPaddingEnd = paddingEnd; - } - - public void setOverlap(boolean overlap) { - mOverlap = overlap; - } - - @Override - public void getItemOffsets(Rect outRect, View view, - RecyclerView parent, RecyclerView.State state) { - if (parent.getAdapter() == null) { - outRect.set(0, 0, 0, 0); - return; - } - - if (mOverlap) { - outRect.set(0, 0, 0, 0); - return; - } - - final int position = parent.getChildLayoutPosition(view); - final int itemCount = parent.getAdapter().getItemCount(); - - if (mShowDividerHelper != null) { - if (mOrientation == VERTICAL) { - if (position == 0 && mShowDividerHelper.showDivider(0)) { - outRect.top = mThickness; - } - if (mShowDividerHelper.showDivider(position + 1)) { - outRect.bottom = mThickness; - } - } else { - if (position == 0 && mShowDividerHelper.showDivider(0)) { - outRect.left = mThickness; - } - if (mShowDividerHelper.showDivider(position + 1)) { - outRect.right = mThickness; - } - } - } else { - if (mOrientation == VERTICAL) { - if (position == 0 && mShowFirstDivider) { - outRect.top = mThickness; - } - outRect.bottom = mThickness; - if (position == itemCount - 1 && !mShowLastDivider) { - outRect.bottom = 0; - } - } else { - if (position == 0 && mShowFirstDivider) { - outRect.left = mThickness; - } - outRect.right = mThickness; - if (position == itemCount - 1 && !mShowLastDivider) { - outRect.right = 0; - } - } - } - } - - @Override - public void onDrawOver(Canvas c, RecyclerView parent, - RecyclerView.State state) { - RecyclerView.Adapter adapter = parent.getAdapter(); - if (adapter == null) { - return; - } - - int itemCount = adapter.getItemCount(); - boolean overlap = mOverlap; - - if (mOrientation == VERTICAL) { - final boolean isRtl = ViewCompat.getLayoutDirection(parent) == ViewCompat.LAYOUT_DIRECTION_RTL; - int mPaddingLeft; - int mPaddingRight; - if (isRtl) { - mPaddingLeft = mPaddingEnd; - mPaddingRight = mPaddingStart; - } else { - mPaddingLeft = mPaddingStart; - mPaddingRight = mPaddingEnd; - } - - final int left = parent.getPaddingLeft() + mPaddingLeft; - final int right = parent.getWidth() - parent.getPaddingRight() - mPaddingRight; - final int childCount = parent.getChildCount(); - - for (int i = 0; i < childCount; i++) { - final View child = parent.getChildAt(i); - final RecyclerView.LayoutParams lp = (RecyclerView.LayoutParams) child.getLayoutParams(); - final int position = parent.getChildLayoutPosition(child); - - boolean show; - if (mShowDividerHelper != null) { - show = mShowDividerHelper.showDivider(position + 1); - } else { - show = position != itemCount - 1 || mShowLastDivider; - } - if (show) { - int top = child.getBottom() + lp.bottomMargin; - if (overlap) { - top -= mThickness; - } - final int bottom = top + mThickness; - mRect.set(left, top, right, bottom); - c.drawRect(mRect, mPaint); - } - - if (position == 0) { - if (mShowDividerHelper != null) { - show = mShowDividerHelper.showDivider(0); - } else { - show = mShowFirstDivider; - } - if (show) { - int bottom = child.getTop() + lp.topMargin; - if (overlap) { - bottom += mThickness; - } - final int top = bottom - mThickness; - mRect.set(left, top, right, bottom); - c.drawRect(mRect, mPaint); - } - } - } - } else { - final int top = parent.getPaddingTop() + mPaddingStart; - final int bottom = parent.getHeight() - parent.getPaddingBottom() - mPaddingEnd; - final int childCount = parent.getChildCount(); - - for (int i = 0; i < childCount; i++) { - final View child = parent.getChildAt(i); - final RecyclerView.LayoutParams lp = (RecyclerView.LayoutParams) child.getLayoutParams(); - final int position = parent.getChildLayoutPosition(child); - - boolean show; - if (mShowDividerHelper != null) { - show = mShowDividerHelper.showDivider(position + 1); - } else { - show = position != itemCount - 1 || mShowLastDivider; - } - if (show) { - int left = child.getRight() + lp.rightMargin; - if (overlap) { - left -= mThickness; - } - final int right = left + mThickness; - mRect.set(left, top, right, bottom); - c.drawRect(mRect, mPaint); - } - - if (position == 0) { - if (mShowDividerHelper != null) { - show = mShowDividerHelper.showDivider(0); - } else { - show = mShowFirstDivider; - } - if (show) { - int right = child.getLeft() + lp.leftMargin; - if (overlap) { - right += mThickness; - } - final int left = right - mThickness; - mRect.set(left, top, right, bottom); - c.drawRect(mRect, mPaint); - } - } - } - } - } - - public interface ShowDividerHelper { - boolean showDivider(int index); - } -} diff --git a/app/src/main/java/com/hippo/ehviewer/ui/fragment/FilterFragment.kt b/app/src/main/java/com/hippo/ehviewer/ui/fragment/FilterFragment.kt index 1165452a8..e1be640a7 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/fragment/FilterFragment.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/fragment/FilterFragment.kt @@ -35,7 +35,6 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.floatingactionbutton.FloatingActionButton import com.google.android.material.textfield.TextInputLayout import com.hippo.easyrecyclerview.EasyRecyclerView -import com.hippo.easyrecyclerview.LinearDividerItemDecoration import com.hippo.ehviewer.R import com.hippo.ehviewer.client.EhFilter import com.hippo.ehviewer.dao.Filter @@ -83,13 +82,6 @@ class FilterFragment : BaseFragment() { recyclerView.adapter = mAdapter recyclerView.clipToPadding = false recyclerView.clipChildren = false - val decoration = LinearDividerItemDecoration( - LinearDividerItemDecoration.VERTICAL, - requireActivity().theme.resolveColor(R.attr.dividerColor), - LayoutUtils.dp2pix(requireActivity(), 1f) - ) - decoration.setShowLastDivider(true) - recyclerView.addItemDecoration(decoration) recyclerView.layoutManager = LinearLayoutManager(requireContext()) recyclerView.setHasFixedSize(true) val defaultItemAnimator = recyclerView.itemAnimator as DefaultItemAnimator? diff --git a/app/src/main/java/com/hippo/ehviewer/ui/fragment/HostsFragment.java b/app/src/main/java/com/hippo/ehviewer/ui/fragment/HostsFragment.java index c22896fa2..8fcd031a7 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/fragment/HostsFragment.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/fragment/HostsFragment.java @@ -37,7 +37,6 @@ import androidx.recyclerview.widget.RecyclerView; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.google.android.material.textfield.TextInputLayout; -import com.hippo.easyrecyclerview.LinearDividerItemDecoration; import com.hippo.ehviewer.EhApplication; import com.hippo.ehviewer.Hosts; import com.hippo.ehviewer.R; @@ -85,12 +84,6 @@ public class HostsFragment extends BaseFragment adapter = new HostsAdapter(); recyclerView.setAdapter(adapter); recyclerView.setLayoutManager(new LinearLayoutManager(requireActivity(), RecyclerView.VERTICAL, false)); - LinearDividerItemDecoration decoration = new LinearDividerItemDecoration( - LinearDividerItemDecoration.VERTICAL, - ResourcesKt.resolveColor(requireActivity().getTheme(), R.attr.dividerColor), - LayoutUtils.dp2pix(requireActivity(), 1)); - decoration.setShowLastDivider(true); - recyclerView.addItemDecoration(decoration); recyclerView.setHasFixedSize(true); fab.setOnClickListener(this); 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 23249e74b..18ace28a4 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 @@ -72,7 +72,6 @@ import com.hippo.conaco.ProgressNotifier; import com.hippo.easyrecyclerview.EasyRecyclerView; import com.hippo.easyrecyclerview.FastScroller; import com.hippo.easyrecyclerview.HandlerDrawable; -import com.hippo.easyrecyclerview.LinearDividerItemDecoration; import com.hippo.easyrecyclerview.MarginItemDecoration; import com.hippo.ehviewer.EhApplication; import com.hippo.ehviewer.EhDB; @@ -648,12 +647,6 @@ public class DownloadsScene extends ToolbarScene mLabelAdapter = new DownloadLabelAdapter(inflater); final EasyRecyclerView recyclerView = view.findViewById(R.id.recycler_view_drawer); recyclerView.setLayoutManager(new LinearLayoutManager(context)); - LinearDividerItemDecoration decoration = new LinearDividerItemDecoration( - LinearDividerItemDecoration.VERTICAL, - ResourcesKt.resolveColor(getTheme(), R.attr.dividerColor), - LayoutUtils.dp2pix(context, 1)); - decoration.setShowLastDivider(true); - recyclerView.addItemDecoration(decoration); mLabelAdapter.setHasStableIds(true); final GeneralItemAnimator animator = new DraggableItemAnimator(); recyclerView.setItemAnimator(animator); 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 325c90573..635cc8b0e 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 @@ -55,7 +55,6 @@ import com.hippo.drawable.AddDeleteDrawable; import com.hippo.drawable.DrawerArrowDrawable; import com.hippo.easyrecyclerview.EasyRecyclerView; import com.hippo.easyrecyclerview.FastScroller; -import com.hippo.easyrecyclerview.LinearDividerItemDecoration; import com.hippo.ehviewer.EhApplication; import com.hippo.ehviewer.EhDB; import com.hippo.ehviewer.R; @@ -446,12 +445,6 @@ public class FavoritesScene extends BaseScene implements EasyRecyclerView recyclerView = view.findViewById(R.id.recycler_view_drawer); recyclerView.setLayoutManager(new LinearLayoutManager(context)); - LinearDividerItemDecoration decoration = new LinearDividerItemDecoration( - LinearDividerItemDecoration.VERTICAL, - ResourcesKt.resolveColor(getTheme(), R.attr.dividerColor), - LayoutUtils.dp2pix(context, 1)); - decoration.setShowLastDivider(true); - recyclerView.addItemDecoration(decoration); mDrawerAdapter = new FavDrawerAdapter(inflater); recyclerView.setAdapter(mDrawerAdapter); 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 22b6bc2f5..4fcd1d047 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 @@ -55,7 +55,6 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.hippo.easyrecyclerview.EasyRecyclerView; -import com.hippo.easyrecyclerview.LinearDividerItemDecoration; import com.hippo.ehviewer.EhApplication; import com.hippo.ehviewer.R; import com.hippo.ehviewer.UrlOpener; @@ -209,11 +208,6 @@ public final class GalleryCommentsScene extends ToolbarScene mRecyclerView.setAdapter(mAdapter); mRecyclerView.setLayoutManager(new LinearLayoutManager(context, RecyclerView.VERTICAL, false)); - LinearDividerItemDecoration decoration = new LinearDividerItemDecoration( - LinearDividerItemDecoration.VERTICAL, ResourcesKt.resolveColor(getTheme(), R.attr.dividerColor), - LayoutUtils.dp2pix(context, 1)); - decoration.setShowLastDivider(true); - mRecyclerView.addItemDecoration(decoration); mRecyclerView.setHasFixedSize(true); // Cancel change animator RecyclerView.ItemAnimator itemAnimator = mRecyclerView.getItemAnimator(); @@ -327,11 +321,6 @@ public final class GalleryCommentsScene extends ToolbarScene } }); rv.setLayoutManager(new LinearLayoutManager(context)); - LinearDividerItemDecoration decoration = new LinearDividerItemDecoration( - LinearDividerItemDecoration.VERTICAL, ResourcesKt.resolveColor(getTheme(), R.attr.dividerColor), - LayoutUtils.dp2pix(context, 1)); - decoration.setPadding(ResourcesUtils.getAttrDimensionPixelOffset(context, androidx.appcompat.R.attr.dialogPreferredPadding)); - rv.addItemDecoration(decoration); rv.setClipToPadding(false); builder.setView(rv).show(); } 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 57e8ecc31..592f68a26 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 @@ -29,7 +29,6 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.hippo.easyrecyclerview.EasyRecyclerView; -import com.hippo.easyrecyclerview.LinearDividerItemDecoration; import com.hippo.ehviewer.R; import com.hippo.ehviewer.Settings; import com.hippo.ehviewer.UrlOpener; @@ -164,13 +163,6 @@ public final class GalleryInfoScene extends ToolbarScene { InfoAdapter adapter = new InfoAdapter(); mRecyclerView.setAdapter(adapter); mRecyclerView.setLayoutManager(new LinearLayoutManager(context, RecyclerView.VERTICAL, false)); - LinearDividerItemDecoration decoration = new LinearDividerItemDecoration( - LinearDividerItemDecoration.VERTICAL, - ResourcesKt.resolveColor(getTheme(), R.attr.dividerColor), - LayoutUtils.dp2pix(context, 1)); - int keylineMargin = context.getResources().getDimensionPixelOffset(R.dimen.keyline_margin); - decoration.setPadding(keylineMargin); - mRecyclerView.addItemDecoration(decoration); mRecyclerView.setClipToPadding(false); mRecyclerView.setHasFixedSize(true); return view; 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 e13af7904..a235f5db1 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 @@ -74,7 +74,6 @@ import com.hippo.drawable.AddDeleteDrawable; import com.hippo.drawable.DrawerArrowDrawable; import com.hippo.easyrecyclerview.EasyRecyclerView; import com.hippo.easyrecyclerview.FastScroller; -import com.hippo.easyrecyclerview.LinearDividerItemDecoration; import com.hippo.ehviewer.EhApplication; import com.hippo.ehviewer.EhDB; import com.hippo.ehviewer.FavouriteStatusRouter; @@ -794,12 +793,6 @@ public final class GalleryListScene extends BaseScene final EasyRecyclerView recyclerView = view.findViewById(R.id.recycler_view_drawer); recyclerView.setLayoutManager(new LinearLayoutManager(context)); - LinearDividerItemDecoration decoration = new LinearDividerItemDecoration( - LinearDividerItemDecoration.VERTICAL, - ResourcesKt.resolveColor(getTheme(), R.attr.dividerColor), - LayoutUtils.dp2pix(context, 1)); - decoration.setShowLastDivider(true); - recyclerView.addItemDecoration(decoration); final QsDrawerAdapter qsDrawerAdapter = new QsDrawerAdapter(inflater); qsDrawerAdapter.setHasStableIds(true); final GeneralItemAnimator animator = new DraggableItemAnimator(); diff --git a/app/src/main/java/com/hippo/ehviewer/widget/SearchBar.java b/app/src/main/java/com/hippo/ehviewer/widget/SearchBar.java index 98f4cd6ad..327f66ff9 100644 --- a/app/src/main/java/com/hippo/ehviewer/widget/SearchBar.java +++ b/app/src/main/java/com/hippo/ehviewer/widget/SearchBar.java @@ -48,7 +48,6 @@ import androidx.recyclerview.widget.RecyclerView; import com.google.android.material.card.MaterialCardView; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.hippo.easyrecyclerview.EasyRecyclerView; -import com.hippo.easyrecyclerview.LinearDividerItemDecoration; import com.hippo.ehviewer.R; import com.hippo.ehviewer.client.EhTagDatabase; import com.hippo.view.ViewTransition; @@ -147,12 +146,6 @@ public class SearchBar extends MaterialCardView implements View.OnClickListener, mSuggestionAdapter = new SuggestionAdapter(LayoutInflater.from(getContext())); mListView.setAdapter(mSuggestionAdapter); LinearLayoutManager layoutManager = new LinearLayoutManager(context); - LinearDividerItemDecoration decoration = new LinearDividerItemDecoration( - LinearDividerItemDecoration.VERTICAL, - ResourcesKt.resolveColor(context.getTheme(), R.attr.dividerColor), - LayoutUtils.dp2pix(context, 1)); - decoration.setShowLastDivider(false); - mListView.addItemDecoration(decoration); mListView.setLayoutManager(layoutManager); }