Use rikkax insets
This commit is contained in:
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) {
|
||||
|
||||
Reference in new issue
Block a user