Use rikkax insets

This commit is contained in:
tehcneko committed 2021-03-17 15:29:20 +08:00
1 parent 086476afdc
commit 0f2506e0d5
42 files changed
+194 -337

No files matched your search

@@ -1,22 +1,11 @@
package com.hippo.ehviewer.ui.fragment;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.RecyclerView;
import com.hippo.ehviewer.ui.SettingsActivity;
public class BaseFragment extends Fragment {
private int paddingBottom = 0;
@Override
public void onStart() {
@@ -40,17 +29,4 @@ public class BaseFragment extends Fragment {
public void showTip(CharSequence message, int length) {
((SettingsActivity) requireActivity()).showTip(message, length);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
paddingBottom = view.getPaddingBottom();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
ViewCompat.setOnApplyWindowInsetsListener(view, (v, insets) -> {
Insets insets1 = insets.getInsets(WindowInsetsCompat.Type.systemBars() | WindowInsetsCompat.Type.ime());
v.setPadding(v.getPaddingLeft(), v.getPaddingTop(), v.getPaddingRight(), paddingBottom + insets1.bottom);
return WindowInsetsCompat.CONSUMED;
});
}
}
}
@@ -2,24 +2,24 @@ package com.hippo.ehviewer.ui.fragment;
import android.os.Build;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.preference.Preference;
import androidx.recyclerview.widget.RecyclerView;
import com.hippo.ehviewer.R;
import com.hippo.ehviewer.ui.SettingsActivity;
import com.takisoft.preferencex.PreferenceFragmentCompat;
import rikka.recyclerview.RecyclerViewKt;
public class BasePreferenceFragment extends PreferenceFragmentCompat
implements Preference.OnPreferenceClickListener, Preference.OnPreferenceChangeListener {
@Override
@@ -74,4 +74,11 @@ public class BasePreferenceFragment extends PreferenceFragmentCompat
});
}
}
@Override
public RecyclerView onCreateRecyclerView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
RecyclerView recyclerView = super.onCreateRecyclerView(inflater, parent, savedInstanceState);
RecyclerViewKt.fixEdgeEffect(recyclerView, false, true);
return recyclerView;
}
}
@@ -87,11 +87,6 @@ public class FilterFragment extends BaseFragment {
if (defaultItemAnimator != null) {
defaultItemAnimator.setSupportsChangeAnimations(false);
}
recyclerView.setPadding(
recyclerView.getPaddingLeft(),
recyclerView.getPaddingTop(),
recyclerView.getPaddingRight(),
recyclerView.getPaddingBottom() + getResources().getDimensionPixelOffset(R.dimen.gallery_padding_bottom_fab));
fab.setOnClickListener(v -> showAddFilterDialog());
@@ -73,11 +73,6 @@ public class HostsFragment extends BaseFragment
decoration.setShowLastDivider(true);
recyclerView.addItemDecoration(decoration);
recyclerView.setHasFixedSize(true);
recyclerView.setPadding(
recyclerView.getPaddingLeft(),
recyclerView.getPaddingTop(),
recyclerView.getPaddingRight(),
recyclerView.getPaddingBottom() + getResources().getDimensionPixelOffset(R.dimen.gallery_padding_bottom_fab));
fab.setOnClickListener(this);
@@ -48,9 +48,7 @@ import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.PopupMenu;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -115,6 +113,8 @@ import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import rikka.recyclerview.RecyclerViewKt;
@SuppressLint("RtlHardcoded")
public class DownloadsScene extends ToolbarScene
implements DownloadManager.DownloadInfoListener,
@@ -373,11 +373,12 @@ public class DownloadsScene extends ToolbarScene
int paddingV = resources.getDimensionPixelOffset(R.dimen.gallery_list_margin_v);
MarginItemDecoration decoration = new MarginItemDecoration(interval, paddingH, paddingV, paddingH, paddingV);
mRecyclerView.addItemDecoration(decoration);
decoration.applyPaddings(mRecyclerView);
if (mInitPosition >= 0) {
mRecyclerView.scrollToPosition(mInitPosition);
mInitPosition = -1;
}
RecyclerViewKt.addVerticalPadding(mRecyclerView, paddingV / 2, 0);
RecyclerViewKt.fixEdgeEffect(mRecyclerView, false, true);
mFastScroller.attachToRecyclerView(mRecyclerView);
HandlerDrawable handlerDrawable = new HandlerDrawable();
@@ -1538,29 +1539,4 @@ public class DownloadsScene extends ToolbarScene
}
}
}
@Override
public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) {
Insets insets1 = insets.getInsets(WindowInsetsCompat.Type.systemBars() | WindowInsetsCompat.Type.ime());
v.setPadding(insets1.left, 0, insets1.right, 0);
View statusBarBackground = v.findViewById(R.id.status_bar_background);
statusBarBackground.getLayoutParams().height = insets1.top;
statusBarBackground.setBackgroundColor(AttrResources.getAttrColor(requireContext(), R.attr.colorPrimaryDark));
if (mRecyclerView != null) {
int paddingH = getResources().getDimensionPixelOffset(R.dimen.gallery_list_margin_h);
int paddingV = getResources().getDimensionPixelOffset(R.dimen.gallery_list_margin_v);
mRecyclerView.setPadding(paddingH, paddingV, paddingH, paddingV + insets1.bottom);
}
if (mFastScroller != null) {
mFastScroller.setPadding(mFastScroller.getPaddingLeft(), mFastScroller.getPaddingTop(), mFastScroller.getPaddingRight(), insets1.bottom);
}
if (mTip != null) {
mTip.setPadding(mTip.getPaddingLeft(), mTip.getPaddingTop(), mTip.getPaddingRight(), insets1.bottom);
}
if (mFabLayout != null) {
int corner_fab_margin = getResources().getDimensionPixelOffset(R.dimen.corner_fab_margin);
mFabLayout.setPadding(mFabLayout.getPaddingLeft(), mFabLayout.getPaddingTop(), mFabLayout.getPaddingRight(), corner_fab_margin + insets1.bottom);
}
return WindowInsetsCompat.CONSUMED;
}
}
@@ -35,7 +35,6 @@ import android.view.View;
import android.view.ViewGroup;
import android.view.WindowInsets;
import android.view.WindowInsetsAnimation;
import android.widget.FrameLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
@@ -43,8 +42,6 @@ import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import androidx.core.graphics.Insets;
import androidx.core.view.WindowInsetsCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -96,6 +93,8 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import rikka.recyclerview.RecyclerViewKt;
// TODO Get favorite, modify favorite, add favorite, what a mess!
@SuppressLint("RtlHardcoded")
public class FavoritesScene extends BaseScene implements
@@ -1386,25 +1385,4 @@ public class FavoritesScene extends BaseScene implements
}
}
}
@Override
public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) {
Insets insets1 = insets.getInsets(WindowInsetsCompat.Type.systemBars() | WindowInsetsCompat.Type.ime());
v.setPadding(insets1.left, 0, insets1.right, 0);
if (mSearchBar != null) {
int gallery_search_bar_margin_v = getResources().getDimensionPixelOffset(R.dimen.gallery_search_bar_margin_v);
FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) mSearchBar.getLayoutParams();
layoutParams.topMargin = insets1.top + gallery_search_bar_margin_v;
layoutParams.bottomMargin = insets1.bottom + gallery_search_bar_margin_v;
}
if (mContentLayout != null) {
mContentLayout.setTopInsets(insets1.top);
mContentLayout.setFitPaddingBottom(insets1.bottom);
}
if (mFabLayout != null) {
int corner_fab_margin = getResources().getDimensionPixelOffset(R.dimen.corner_fab_margin);
mFabLayout.setPadding(mFabLayout.getPaddingLeft(), mFabLayout.getPaddingTop(), mFabLayout.getPaddingRight(), corner_fab_margin + insets1.bottom);
}
return WindowInsetsCompat.CONSUMED;
}
}
@@ -121,7 +121,6 @@ abstract class GalleryAdapter extends RecyclerView.Adapter<GalleryHolder> {
mListDecoration = new MarginItemDecoration(interval, paddingH, paddingV, paddingH, paddingV);
}
recyclerView.addItemDecoration(mListDecoration);
mListDecoration.applyPaddings(recyclerView);
adjustPaddings();
notifyDataSetChanged();
break;
@@ -140,7 +139,6 @@ abstract class GalleryAdapter extends RecyclerView.Adapter<GalleryHolder> {
mGirdDecoration = new MarginItemDecoration(interval, paddingH, paddingV, paddingH, paddingV);
}
recyclerView.addItemDecoration(mGirdDecoration);
mGirdDecoration.applyPaddings(recyclerView);
adjustPaddings();
notifyDataSetChanged();
break;
@@ -155,7 +153,7 @@ abstract class GalleryAdapter extends RecyclerView.Adapter<GalleryHolder> {
switch (viewType) {
default:
case TYPE_LIST:
layoutId = R.layout.item_gallery_list;
layoutId = R.layout.item_history;
break;
case TYPE_GRID:
layoutId = R.layout.item_gallery_grid;
@@ -50,9 +50,7 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.core.content.ContextCompat;
import androidx.core.graphics.Insets;
import androidx.core.text.util.LinkifyCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -98,6 +96,8 @@ import com.hippo.yorozuya.collect.IntList;
import java.util.ArrayList;
import java.util.List;
import rikka.recyclerview.RecyclerViewKt;
public final class GalleryCommentsScene extends ToolbarScene
implements View.OnClickListener, SwipeRefreshLayout.OnRefreshListener {
@@ -194,6 +194,7 @@ public final class GalleryCommentsScene extends ToolbarScene
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.scene_gallery_comments, container, false);
mRecyclerView = (EasyRecyclerView) ViewUtils.$$(view, R.id.recycler_view);
RecyclerViewKt.fixEdgeEffect(mRecyclerView, false, true);
TextView tip = (TextView) ViewUtils.$$(view, R.id.tip);
mEditPanel = ViewUtils.$$(view, R.id.edit_panel);
mSendImage = (ImageView) ViewUtils.$$(mEditPanel, R.id.send);
@@ -1059,25 +1060,4 @@ public final class GalleryCommentsScene extends ToolbarScene
}
}
}
@Override
public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) {
Insets insets1 = insets.getInsets(WindowInsetsCompat.Type.systemBars() | WindowInsetsCompat.Type.ime());
v.setPadding(insets1.left, 0, insets1.right, 0);
View statusBarBackground = v.findViewById(R.id.status_bar_background);
statusBarBackground.getLayoutParams().height = insets1.top;
statusBarBackground.setBackgroundColor(AttrResources.getAttrColor(requireContext(), R.attr.colorPrimaryDark));
if (mFabLayout != null) {
int corner_fab_margin = getResources().getDimensionPixelOffset(R.dimen.corner_fab_margin);
mFabLayout.setPadding(mFabLayout.getPaddingLeft(), mFabLayout.getPaddingTop(), mFabLayout.getPaddingRight(), corner_fab_margin + insets1.bottom);
}
if (mEditPanel != null) {
mEditPanel.setPadding(mEditPanel.getPaddingLeft(), mEditPanel.getPaddingTop(), mEditPanel.getPaddingRight(), insets1.bottom);
}
if (mRecyclerView != null) {
int paddingBottomFab = getResources().getDimensionPixelOffset(R.dimen.gallery_padding_bottom_fab);
mRecyclerView.setPadding(mRecyclerView.getPaddingLeft(), mRecyclerView.getPaddingTop(), mRecyclerView.getPaddingRight(), paddingBottomFab + insets1.bottom);
}
return WindowInsetsCompat.CONSUMED;
}
}
@@ -60,9 +60,7 @@ import androidx.annotation.StringRes;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.PopupMenu;
import androidx.core.content.ContextCompat;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;
import androidx.transition.TransitionInflater;
@@ -2182,24 +2180,4 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
EhApplication.getEhClient(context).execute(request);
}
}
@Override
public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) {
Insets insets1 = insets.getInsets(WindowInsetsCompat.Type.systemBars() | WindowInsetsCompat.Type.ime());
v.setPadding(insets1.left, 0, insets1.right, 0);
if (mHeader != null) {
mHeader.findViewById(R.id.header_content).setPadding(0, insets1.top, 0, 0);
}
if (mPreviews != null) {
int keylineMargin = getResources().getDimensionPixelOffset(R.dimen.keyline_margin);
mPreviews.setPadding(keylineMargin, keylineMargin, keylineMargin, keylineMargin + insets1.bottom);
}
if (mTip != null) {
mTip.setPadding(mTip.getPaddingLeft(), mTip.getPaddingTop(), mTip.getPaddingRight(), insets1.bottom);
}
if (mProgress != null) {
mProgress.setPadding(mProgress.getPaddingLeft(), mProgress.getPaddingTop(), mProgress.getPaddingRight(), insets1.bottom);
}
return WindowInsetsCompat.CONSUMED;
}
}
@@ -25,8 +25,6 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.graphics.Insets;
import androidx.core.view.WindowInsetsCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -46,6 +44,8 @@ import com.hippo.yorozuya.ViewUtils;
import java.util.ArrayList;
import rikka.recyclerview.RecyclerViewKt;
public final class GalleryInfoScene extends ToolbarScene {
public static final String KEY_GALLERY_DETAIL = "gallery_detail";
@@ -169,10 +169,12 @@ public final class GalleryInfoScene extends ToolbarScene {
LinearDividerItemDecoration.VERTICAL,
AttrResources.getAttrColor(context, R.attr.dividerColor),
LayoutUtils.dp2pix(context, 1));
decoration.setPadding(context.getResources().getDimensionPixelOffset(R.dimen.keyline_margin));
int keylineMargin = context.getResources().getDimensionPixelOffset(R.dimen.keyline_margin);
decoration.setPadding(keylineMargin);
mRecyclerView.addItemDecoration(decoration);
mRecyclerView.setClipToPadding(false);
mRecyclerView.setHasFixedSize(true);
RecyclerViewKt.fixEdgeEffect(mRecyclerView, false, true);
return view;
}
@@ -275,18 +277,4 @@ public final class GalleryInfoScene extends ToolbarScene {
return mKeys == null || mValues == null ? 0 : Math.min(mKeys.size(), mValues.size());
}
}
@Override
public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) {
Insets insets1 = insets.getInsets(WindowInsetsCompat.Type.systemBars() | WindowInsetsCompat.Type.ime());
v.setPadding(insets1.left, 0, insets1.right, 0);
View statusBarBackground = v.findViewById(R.id.status_bar_background);
statusBarBackground.getLayoutParams().height = insets1.top;
statusBarBackground.setBackgroundColor(AttrResources.getAttrColor(requireContext(), R.attr.colorPrimaryDark));
if (mRecyclerView != null) {
int keyline_margin = getResources().getDimensionPixelOffset(R.dimen.keyline_margin);
mRecyclerView.setPadding(mRecyclerView.getPaddingLeft(), mRecyclerView.getPaddingTop(), mRecyclerView.getPaddingRight(), keyline_margin + insets1.bottom);
}
return WindowInsetsCompat.CONSUMED;
}
}
@@ -42,7 +42,6 @@ import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.view.WindowInsets;
import android.view.WindowInsetsAnimation;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
@@ -55,8 +54,6 @@ import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.PopupMenu;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import androidx.core.graphics.Insets;
import androidx.core.view.WindowInsetsCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -129,6 +126,8 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import rikka.recyclerview.RecyclerViewKt;
@SuppressLint("RtlHardcoded")
public final class GalleryListScene extends BaseScene
implements SearchBar.Helper, SearchBar.OnStateChangeListener, FastScroller.OnDragHandlerListener,
@@ -1976,35 +1975,4 @@ public final class GalleryListScene extends BaseScene
}
}
}
@Override
public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) {
Insets insets1 = insets.getInsets(WindowInsetsCompat.Type.systemBars() | WindowInsetsCompat.Type.ime());
v.setPadding(insets1.left, 0, insets1.right, 0);
int corner_fab_margin = getResources().getDimensionPixelOffset(R.dimen.corner_fab_margin);
if (mSearchBar != null) {
int gallery_search_bar_margin_v = getResources().getDimensionPixelOffset(R.dimen.gallery_search_bar_margin_v);
FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) mSearchBar.getLayoutParams();
layoutParams.topMargin = insets1.top + gallery_search_bar_margin_v;
layoutParams.bottomMargin = insets1.bottom + gallery_search_bar_margin_v;
}
if (mContentLayout != null) {
mContentLayout.setTopInsets(insets1.top);
mContentLayout.setFitPaddingBottom(insets1.bottom);
}
if (mSearchFab != null) {
FabLayout fabLayout = (FabLayout) mSearchFab.getParent();
fabLayout.setPadding(mSearchFab.getPaddingLeft(), mSearchFab.getPaddingTop(), fabLayout.getPaddingRight(), corner_fab_margin + insets1.bottom);
}
if (mFabLayout != null) {
mFabLayout.setPadding(mFabLayout.getPaddingLeft(), mFabLayout.getPaddingTop(), mFabLayout.getPaddingRight(), corner_fab_margin + insets1.bottom);
}
if (mSearchLayout != null) {
int paddingTopSB = getResources().getDimensionPixelOffset(R.dimen.gallery_padding_top_search_bar);
int paddingBottomFab = getResources().getDimensionPixelOffset(R.dimen.gallery_padding_bottom_fab);
mSearchLayout.setPadding(mSearchLayout.getPaddingLeft(), paddingTopSB + insets1.top,
mSearchLayout.getPaddingRight(), paddingBottomFab + insets1.bottom);
}
return WindowInsetsCompat.CONSUMED;
}
}
@@ -33,12 +33,9 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.core.graphics.Insets;
import androidx.core.view.WindowInsetsCompat;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.hippo.android.resource.AttrResources;
import com.hippo.easyrecyclerview.EasyRecyclerView;
import com.hippo.easyrecyclerview.MarginItemDecoration;
import com.hippo.ehviewer.EhApplication;
@@ -65,6 +62,8 @@ import com.hippo.yorozuya.ViewUtils;
import java.util.ArrayList;
import java.util.Locale;
import rikka.recyclerview.RecyclerViewKt;
public class GalleryPreviewsScene extends ToolbarScene {
public static final String KEY_GALLERY_INFO = "gallery_info";
@@ -157,7 +156,6 @@ public class GalleryPreviewsScene extends ToolbarScene {
int padding = LayoutUtils.dp2pix(context, 4);
MarginItemDecoration decoration = new MarginItemDecoration(padding, padding, padding, padding, padding);
mRecyclerView.addItemDecoration(decoration);
decoration.applyPaddings(mRecyclerView);
mHelper = new GalleryPreviewHelper();
mContentLayout.setHelper(mHelper);
@@ -453,17 +451,4 @@ public class GalleryPreviewsScene extends ToolbarScene {
mSlider = null;
}
}
@Override
public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) {
Insets insets1 = insets.getInsets(WindowInsetsCompat.Type.systemBars() | WindowInsetsCompat.Type.ime());
v.setPadding(insets1.left, 0, insets1.right, 0);
View statusBarBackground = v.findViewById(R.id.status_bar_background);
statusBarBackground.getLayoutParams().height = insets1.top;
statusBarBackground.setBackgroundColor(AttrResources.getAttrColor(requireContext(), R.attr.colorPrimaryDark));
if (mContentLayout != null) {
mContentLayout.setFitPaddingBottom(insets1.bottom);
}
return WindowInsetsCompat.CONSUMED;
}
}
@@ -35,9 +35,7 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.StaggeredGridLayoutManager;
@@ -88,6 +86,8 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import rikka.recyclerview.RecyclerViewKt;
public class HistoryScene extends ToolbarScene {
/*---------------
@@ -223,20 +223,17 @@ public class HistoryScene extends ToolbarScene {
layoutManager.setColumnSize(resources.getDimensionPixelOffset(Settings.getDetailSizeResId()));
layoutManager.setStrategy(AutoStaggeredGridLayoutManager.STRATEGY_MIN_SIZE);
mRecyclerView.setLayoutManager(layoutManager);
//mRecyclerView.setSelector(Ripple.generateRippleDrawable(context, !AttrResources.getAttrBoolean(context, R.attr.isLightTheme), new ColorDrawable(Color.TRANSPARENT)));
//mRecyclerView.setDrawSelectorOnTop(true);
mRecyclerView.setClipToPadding(false);
mRecyclerView.setClipChildren(false);
//mRecyclerView.setOnItemClickListener(this);
//mRecyclerView.setOnItemLongClickListener(this);
int interval = resources.getDimensionPixelOffset(R.dimen.gallery_list_interval);
int paddingH = resources.getDimensionPixelOffset(R.dimen.gallery_list_margin_h);
int paddingV = resources.getDimensionPixelOffset(R.dimen.gallery_list_margin_v);
MarginItemDecoration decoration = new MarginItemDecoration(interval, paddingH, paddingV, paddingH, paddingV);
mRecyclerView.addItemDecoration(decoration);
decoration.applyPaddings(mRecyclerView);
guardManager.attachRecyclerView(mRecyclerView);
swipeManager.attachRecyclerView(mRecyclerView);
RecyclerViewKt.fixEdgeEffect(mRecyclerView, false, true);
RecyclerViewKt.addVerticalPadding(mRecyclerView, paddingV / 2, 0);
mFastScroller.attachToRecyclerView(mRecyclerView);
HandlerDrawable handlerDrawable = new HandlerDrawable();
@@ -711,25 +708,4 @@ public class HistoryScene extends ToolbarScene {
updateView(true);
}
}
@Override
public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) {
Insets insets1 = insets.getInsets(WindowInsetsCompat.Type.systemBars() | WindowInsetsCompat.Type.ime());
v.setPadding(insets1.left, 0, insets1.right, 0);
View statusBarBackground = v.findViewById(R.id.status_bar_background);
statusBarBackground.getLayoutParams().height = insets1.top;
statusBarBackground.setBackgroundColor(AttrResources.getAttrColor(requireContext(), R.attr.colorPrimaryDark));
if (mRecyclerView != null) {
int paddingH = getResources().getDimensionPixelOffset(R.dimen.gallery_list_margin_h);
int paddingV = getResources().getDimensionPixelOffset(R.dimen.gallery_list_margin_v);
mRecyclerView.setPadding(paddingH, paddingV, paddingH, paddingV + insets1.bottom);
}
if (mFastScroller != null) {
mFastScroller.setPadding(mFastScroller.getPaddingLeft(), mFastScroller.getPaddingTop(), mFastScroller.getPaddingRight(), insets1.bottom);
}
if (mTip != null) {
mTip.setPadding(mTip.getPaddingLeft(), mTip.getPaddingTop(), mTip.getPaddingRight(), insets1.bottom);
}
return WindowInsetsCompat.CONSUMED;
}
}
@@ -29,10 +29,7 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.appcompat.widget.Toolbar;
import androidx.core.graphics.Insets;
import androidx.core.view.WindowInsetsCompat;
import com.hippo.android.resource.AttrResources;
import com.hippo.ehviewer.R;
public abstract class ToolbarScene extends BaseScene {
@@ -130,14 +127,4 @@ public abstract class ToolbarScene extends BaseScene {
mTempTitle = title;
}
}
@Override
public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) {
Insets insets1 = insets.getInsets(WindowInsetsCompat.Type.systemBars() | WindowInsetsCompat.Type.ime());
v.setPadding(insets1.left, 0, insets1.right, insets1.bottom);
View statusBarBackground = v.findViewById(R.id.status_bar_background);
statusBarBackground.getLayoutParams().height = insets1.top;
statusBarBackground.setBackgroundColor(AttrResources.getAttrColor(requireContext(), R.attr.colorPrimaryDark));
return WindowInsetsCompat.CONSUMED;
}
}
@@ -22,9 +22,6 @@ import android.view.View;
import androidx.annotation.IntDef;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.graphics.Insets;
import androidx.core.view.OnApplyWindowInsetsListener;
import androidx.core.view.WindowInsetsCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
@@ -37,7 +34,7 @@ import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.List;
public class SceneFragment extends Fragment implements OnApplyWindowInsetsListener {
public class SceneFragment extends Fragment {
public static final int LAUNCH_MODE_STANDARD = 0;
public static final int LAUNCH_MODE_SINGLE_TOP = 1;
@@ -54,10 +51,6 @@ public class SceneFragment extends Fragment implements OnApplyWindowInsetsListen
Bundle result = null;
List<String> mRequestSceneTagList = new ArrayList<>(0);
IntList mRequestCodeList = new IntList(0);
private int paddingTop = 0;
private int paddingBottom = 0;
private int paddingLeft = 0;
private int paddingRight = 0;
public void onNewArguments(@NonNull Bundle args) {
}
@@ -113,10 +106,6 @@ public class SceneFragment extends Fragment implements OnApplyWindowInsetsListen
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
paddingTop = view.getPaddingTop();
paddingBottom = view.getPaddingBottom();
paddingLeft = view.getPaddingLeft();
paddingRight = view.getPaddingRight();
view.setTag(R.id.fragment_tag, getTag());
view.setBackground(AttrResources.getAttrDrawable(getContext(), android.R.attr.windowBackground));
@@ -175,13 +164,6 @@ public class SceneFragment extends Fragment implements OnApplyWindowInsetsListen
this.result = result;
}
@Override
public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) {
Insets insets1 = insets.getInsets(WindowInsetsCompat.Type.systemBars() | WindowInsetsCompat.Type.ime());
v.setPadding(paddingLeft + insets1.left, insets1.top + paddingTop, paddingRight + insets1.right, insets1.bottom + paddingBottom);
return WindowInsetsCompat.CONSUMED;
}
@IntDef({LAUNCH_MODE_STANDARD, LAUNCH_MODE_SINGLE_TOP, LAUNCH_MODE_SINGLE_TASK})
@Retention(RetentionPolicy.SOURCE)
public @interface LaunchMode {
@@ -24,7 +24,6 @@ import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.view.ViewCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
@@ -196,10 +195,6 @@ public abstract class StageActivity extends EhActivity {
}
public void onSceneViewCreated(SceneFragment scene, Bundle savedInstanceState) {
View view = scene.getView();
if (view != null) {
ViewCompat.setOnApplyWindowInsetsListener(view, scene);
}
}
public void onSceneViewDestroyed(SceneFragment scene) {
@@ -16,6 +16,7 @@
package com.hippo.widget;
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
@@ -23,7 +24,6 @@ import android.os.Bundle;
import android.os.Parcelable;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
@@ -56,6 +56,8 @@ import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import rikka.recyclerview.RecyclerViewKt;
public class ContentLayout extends FrameLayout {
private CircularProgressIndicator mProgressView;
@@ -88,7 +90,7 @@ public class ContentLayout extends FrameLayout {
}
private void init(Context context) {
LayoutInflater.from(context).inflate(R.layout.widget_content_layout, this);
((Activity) context).getLayoutInflater().inflate(R.layout.widget_content_layout, this);
setClipChildren(false);
setClipToPadding(false);
@@ -122,7 +124,11 @@ public class ContentLayout extends FrameLayout {
resources.getColor(R.color.loading_indicator_orange));
mBottomProgress.setIndeterminateAnimationType(LinearProgressIndicator.INDETERMINATE_ANIMATION_TYPE_CONTIGUOUS);
mRecyclerViewOriginTop = mRecyclerView.getPaddingTop();
int paddingV = resources.getDimensionPixelOffset(R.dimen.gallery_list_margin_v);
RecyclerViewKt.addVerticalPadding(mRecyclerView, paddingV / 2, paddingV / 2);
RecyclerViewKt.fixEdgeEffect(mRecyclerView, false, true);
mRecyclerViewOriginBottom = mRecyclerView.getPaddingBottom();
}
@@ -154,15 +160,15 @@ public class ContentLayout extends FrameLayout {
mFastScroller.detachedFromRecyclerView();
}
public void setFitPaddingTop(int fitPaddingTop) {
// RecyclerView
mRecyclerView.setPadding(mRecyclerView.getPaddingLeft(), mRecyclerViewOriginTop + fitPaddingTop, mRecyclerView.getPaddingRight(), mRecyclerView.getPaddingBottom());
// RefreshLayout
mRefreshLayout.setProgressViewOffset(true, 0, fitPaddingTop + LayoutUtils.dp2pix(getContext(), 32)); // TODO
@Override
public void setPadding(int left, int top, int right, int bottom) {
super.setPadding(left, top, right, 0);
setFitPaddingBottom(bottom);
}
public void setTopInsets(int topInsets) {
setPadding(0, topInsets, 0, 0);
public void setFitPaddingTop(int fitPaddingTop) {
// RefreshLayout
mRefreshLayout.setProgressViewOffset(true, 0, fitPaddingTop + LayoutUtils.dp2pix(getContext(), 32)); // TODO
}
public void setFitPaddingBottom(int fitPaddingBottom) {