Fix insets bugs
This commit is contained in:
23 files changed
+172
-101
No files matched your search
@@ -77,7 +77,7 @@ public class AnalyticsScene extends SolidScene implements View.OnClickListener {
|
||||
public void onClick(View v) {
|
||||
Context context = getContext();
|
||||
MainActivity activity = getMainActivity();
|
||||
if (null == context) {
|
||||
if (context == null || activity == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -91,9 +91,7 @@ public class AnalyticsScene extends SolidScene implements View.OnClickListener {
|
||||
Settings.putAskAnalytics(false);
|
||||
|
||||
// Start new scene and finish it self
|
||||
if (activity != null) {
|
||||
startSceneForCheckStep(CHECK_STEP_ANALYTICS, getArguments());
|
||||
}
|
||||
startSceneForCheckStep(CHECK_STEP_ANALYTICS, getArguments());
|
||||
finish();
|
||||
}
|
||||
}
|
||||
@@ -33,6 +33,7 @@ import android.view.ViewGroup;
|
||||
import androidx.annotation.IdRes;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.RequiresApi;
|
||||
import androidx.annotation.StringRes;
|
||||
import androidx.drawerlayout.widget.DrawerLayout;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
@@ -199,20 +200,18 @@ public abstract class BaseScene extends SceneFragment {
|
||||
drawerView = null;
|
||||
}
|
||||
|
||||
public void setWhiteStatusBar(boolean set) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
View decorView = requireActivity().getWindow().getDecorView();
|
||||
int flags = decorView.getSystemUiVisibility();
|
||||
if (set && (requireActivity().getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_YES) <= 0) {
|
||||
flags |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
|
||||
} else {
|
||||
flags &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
|
||||
}
|
||||
decorView.setSystemUiVisibility(flags);
|
||||
((EhDrawerLayout) requireActivity().findViewById(R.id.draw_view)).setStatusBarBackgroundColor(set ? Color.TRANSPARENT : AttrResources.getAttrColor(requireContext(), R.attr.colorPrimaryDark));
|
||||
@RequiresApi(api = Build.VERSION_CODES.M)
|
||||
public void setLightStatusBar(boolean set) {
|
||||
View decorView = requireActivity().getWindow().getDecorView();
|
||||
int flags = decorView.getSystemUiVisibility();
|
||||
if (set && (requireActivity().getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_YES) <= 0) {
|
||||
flags |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
|
||||
} else {
|
||||
((EhDrawerLayout) requireActivity().findViewById(R.id.draw_view)).setStatusBarBackgroundColor(AttrResources.getAttrColor(requireContext(), R.attr.colorPrimaryDark));
|
||||
flags &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
|
||||
}
|
||||
decorView.setSystemUiVisibility(flags);
|
||||
int color = Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q || set ? Color.TRANSPARENT : AttrResources.getAttrColor(requireContext(), R.attr.colorPrimaryDark);
|
||||
((EhDrawerLayout) requireActivity().findViewById(R.id.draw_view)).setStatusBarBackgroundColor(color);
|
||||
}
|
||||
|
||||
public void onDestroyDrawerView() {
|
||||
@@ -220,7 +219,7 @@ public abstract class BaseScene extends SceneFragment {
|
||||
|
||||
@SuppressLint("RtlHardcoded")
|
||||
@Override
|
||||
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
|
||||
// Update left drawer locked state
|
||||
@@ -235,7 +234,9 @@ public abstract class BaseScene extends SceneFragment {
|
||||
|
||||
// Hide soft ime
|
||||
AppHelper.hideSoftInput(getActivity());
|
||||
setWhiteStatusBar(needWhiteStatusBar());
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
setLightStatusBar(needWhiteStatusBar());
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
@@ -155,7 +155,7 @@ public class CookieSignInScene extends SolidScene implements EditText.OnEditorAc
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
showSoftInput(mIpbMemberId);
|
||||
}
|
||||
|
||||
@@ -141,6 +141,10 @@ public class DownloadsScene extends ToolbarScene
|
||||
View life cycle
|
||||
---------------*/
|
||||
@Nullable
|
||||
private TextView mTip;
|
||||
@Nullable
|
||||
private FastScroller mFastScroller;
|
||||
@Nullable
|
||||
private EasyRecyclerView mRecyclerView;
|
||||
@Nullable
|
||||
private ViewTransition mViewTransition;
|
||||
@@ -333,10 +337,10 @@ public class DownloadsScene extends ToolbarScene
|
||||
|
||||
View content = ViewUtils.$$(view, R.id.content);
|
||||
mRecyclerView = (EasyRecyclerView) ViewUtils.$$(content, R.id.recycler_view);
|
||||
FastScroller fastScroller = (FastScroller) ViewUtils.$$(content, R.id.fast_scroller);
|
||||
mFastScroller = (FastScroller) ViewUtils.$$(content, R.id.fast_scroller);
|
||||
mFabLayout = (FabLayout) ViewUtils.$$(view, R.id.fab_layout);
|
||||
TextView tip = (TextView) ViewUtils.$$(view, R.id.tip);
|
||||
mViewTransition = new ViewTransition(content, tip);
|
||||
mTip = (TextView) ViewUtils.$$(view, R.id.tip);
|
||||
mViewTransition = new ViewTransition(content, mTip);
|
||||
|
||||
Context context = getContext();
|
||||
AssertUtils.assertNotNull(content);
|
||||
@@ -344,7 +348,7 @@ public class DownloadsScene extends ToolbarScene
|
||||
|
||||
Drawable drawable = ContextCompat.getDrawable(context, R.drawable.big_download);
|
||||
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
|
||||
tip.setCompoundDrawables(null, drawable, null, null);
|
||||
mTip.setCompoundDrawables(null, drawable, null, null);
|
||||
|
||||
mAdapter = new DownloadAdapter();
|
||||
mAdapter.setHasStableIds(true);
|
||||
@@ -377,11 +381,11 @@ public class DownloadsScene extends ToolbarScene
|
||||
mInitPosition = -1;
|
||||
}
|
||||
|
||||
fastScroller.attachToRecyclerView(mRecyclerView);
|
||||
mFastScroller.attachToRecyclerView(mRecyclerView);
|
||||
HandlerDrawable handlerDrawable = new HandlerDrawable();
|
||||
handlerDrawable.setColor(AttrResources.getAttrColor(context, R.attr.widgetColorThemeAccent));
|
||||
fastScroller.setHandlerDrawable(handlerDrawable);
|
||||
fastScroller.setOnDragHandlerListener(this);
|
||||
mFastScroller.setHandlerDrawable(handlerDrawable);
|
||||
mFastScroller.setOnDragHandlerListener(this);
|
||||
|
||||
mFabLayout.setExpanded(false, false);
|
||||
mFabLayout.setHidePrimaryFab(true);
|
||||
@@ -476,7 +480,7 @@ public class DownloadsScene extends ToolbarScene
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
updateTitle();
|
||||
setNavigationIcon(new DrawerArrowDrawable(getContext(), Color.WHITE));
|
||||
@@ -1540,15 +1544,24 @@ 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) {
|
||||
mRecyclerView.setPadding(mRecyclerView.getPaddingLeft(), mRecyclerView.getPaddingTop(), mRecyclerView.getPaddingRight(), insets1.bottom);
|
||||
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(), corner_fab_margin + insets1.right, corner_fab_margin + insets1.bottom);
|
||||
mFabLayout.setPadding(mFabLayout.getPaddingLeft(), mFabLayout.getPaddingTop(), mFabLayout.getPaddingRight(), corner_fab_margin + insets1.bottom);
|
||||
}
|
||||
return WindowInsetsCompat.CONSUMED;
|
||||
}
|
||||
|
||||
@@ -1387,6 +1387,7 @@ 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();
|
||||
@@ -1398,7 +1399,7 @@ public class FavoritesScene extends BaseScene implements
|
||||
}
|
||||
if (mFabLayout != null) {
|
||||
int corner_fab_margin = getResources().getDimensionPixelOffset(R.dimen.corner_fab_margin);
|
||||
mFabLayout.setPadding(mFabLayout.getPaddingLeft(), mFabLayout.getPaddingTop(), corner_fab_margin + insets1.right, corner_fab_margin + insets1.bottom);
|
||||
mFabLayout.setPadding(mFabLayout.getPaddingLeft(), mFabLayout.getPaddingTop(), mFabLayout.getPaddingRight(), corner_fab_margin + insets1.bottom);
|
||||
}
|
||||
return WindowInsetsCompat.CONSUMED;
|
||||
}
|
||||
|
||||
@@ -251,7 +251,17 @@ public final class GalleryCommentsScene extends ToolbarScene
|
||||
|
||||
@Override
|
||||
public void onEnd(@NonNull WindowInsetsAnimation animation) {
|
||||
super.onEnd(animation);
|
||||
startBottomEditPanel = 0;
|
||||
startBottomFabLayout = 0;
|
||||
endBottomEditPanel = 0;
|
||||
endBottomFabLayout = 0;
|
||||
this.animation = null;
|
||||
if (mEditPanel != null) {
|
||||
mEditPanel.setTranslationY(0);
|
||||
}
|
||||
if (mFabLayout != null) {
|
||||
mFabLayout.setTranslationY(0);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -332,7 +342,7 @@ public final class GalleryCommentsScene extends ToolbarScene
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
setTitle(R.string.gallery_comments);
|
||||
setNavigationIcon(R.drawable.v_arrow_left_dark_x24);
|
||||
@@ -1043,12 +1053,13 @@ 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(), corner_fab_margin + insets1.right, corner_fab_margin + insets1.bottom);
|
||||
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);
|
||||
|
||||
@@ -49,6 +49,7 @@ import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.ListView;
|
||||
import android.widget.RatingBar;
|
||||
import android.widget.ScrollView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.activity.result.ActivityResultLauncher;
|
||||
@@ -496,7 +497,15 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
View view = inflater.inflate(R.layout.scene_gallery_detail, container, false);
|
||||
|
||||
ViewGroup main = (ViewGroup) ViewUtils.$$(view, R.id.main);
|
||||
View mainView = ViewUtils.$$(main, R.id.scroll_view);
|
||||
ScrollView mainView = (ScrollView) ViewUtils.$$(main, R.id.scroll_view);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||
mainView.setOnScrollChangeListener((v, scrollX, scrollY, oldScrollX, oldScrollY) -> {
|
||||
if (mActionGroup != null && mHeader != null) {
|
||||
//noinspection IntegerDivisionInFloatingPointContext
|
||||
setLightStatusBar(mActionGroup.getY() - mHeader.findViewById(R.id.header_content).getPaddingTop() / 2 < scrollY);
|
||||
}
|
||||
});
|
||||
}
|
||||
View progressView = ViewUtils.$$(main, R.id.progress_view);
|
||||
mTip = (TextView) ViewUtils.$$(main, R.id.tip);
|
||||
mViewTransition = new ViewTransition(mainView, progressView, mTip);
|
||||
@@ -808,16 +817,25 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
|
||||
switch (state) {
|
||||
case STATE_NORMAL:
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||
setLightStatusBar(false);
|
||||
}
|
||||
// Show mMainView
|
||||
mViewTransition.showView(0, animation);
|
||||
// Show mBelowHeader
|
||||
mViewTransition2.showView(0, animation);
|
||||
break;
|
||||
case STATE_REFRESH:
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||
setLightStatusBar(true);
|
||||
}
|
||||
// Show mProgressView
|
||||
mViewTransition.showView(1, animation);
|
||||
break;
|
||||
case STATE_REFRESH_HEADER:
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||
setLightStatusBar(false);
|
||||
}
|
||||
// Show mMainView
|
||||
mViewTransition.showView(0, animation);
|
||||
// Show mProgress
|
||||
@@ -826,6 +844,9 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
default:
|
||||
case STATE_INIT:
|
||||
case STATE_FAILED:
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||
setLightStatusBar(true);
|
||||
}
|
||||
// Show mFailedView
|
||||
mViewTransition.showView(2, animation);
|
||||
break;
|
||||
@@ -2195,6 +2216,7 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
@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);
|
||||
}
|
||||
@@ -2202,6 +2224,12 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -177,7 +177,7 @@ public final class GalleryInfoScene extends ToolbarScene {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
setTitle(R.string.gallery_info);
|
||||
setNavigationIcon(R.drawable.v_arrow_left_dark_x24);
|
||||
|
||||
@@ -627,6 +627,13 @@ public final class GalleryListScene extends BaseScene
|
||||
endBottomSearchFab = 0;
|
||||
endBottomFabLayout = 0;
|
||||
this.animation = null;
|
||||
if (mSearchFab != null) {
|
||||
FabLayout fabLayout = (FabLayout) mSearchFab.getParent();
|
||||
fabLayout.setTranslationY(0);
|
||||
}
|
||||
if (mFabLayout != null) {
|
||||
mFabLayout.setTranslationY(0);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -1970,6 +1977,7 @@ 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);
|
||||
@@ -1982,10 +1990,10 @@ public final class GalleryListScene extends BaseScene
|
||||
}
|
||||
if (mSearchFab != null) {
|
||||
FabLayout fabLayout = (FabLayout) mSearchFab.getParent();
|
||||
fabLayout.setPadding(mSearchFab.getPaddingLeft(), mSearchFab.getPaddingTop(), corner_fab_margin + insets1.right, corner_fab_margin + insets1.bottom);
|
||||
fabLayout.setPadding(mSearchFab.getPaddingLeft(), mSearchFab.getPaddingTop(), fabLayout.getPaddingRight(), corner_fab_margin + insets1.bottom);
|
||||
}
|
||||
if (mFabLayout != null) {
|
||||
mFabLayout.setPadding(mFabLayout.getPaddingLeft(), mFabLayout.getPaddingTop(), corner_fab_margin + insets1.right, corner_fab_margin + insets1.bottom);
|
||||
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);
|
||||
|
||||
@@ -189,7 +189,7 @@ public class GalleryPreviewsScene extends ToolbarScene {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
setTitle(R.string.gallery_previews);
|
||||
setNavigationIcon(R.drawable.v_arrow_left_dark_x24);
|
||||
@@ -457,6 +457,7 @@ public class GalleryPreviewsScene 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));
|
||||
|
||||
@@ -94,6 +94,10 @@ public class HistoryScene extends ToolbarScene {
|
||||
View life cycle
|
||||
---------------*/
|
||||
@Nullable
|
||||
private TextView mTip;
|
||||
@Nullable
|
||||
private FastScroller mFastScroller;
|
||||
@Nullable
|
||||
private EasyRecyclerView mRecyclerView;
|
||||
@Nullable
|
||||
private ViewTransition mViewTransition;
|
||||
@@ -191,9 +195,9 @@ public class HistoryScene extends ToolbarScene {
|
||||
View view = inflater.inflate(R.layout.scene_history, container, false);
|
||||
View content = ViewUtils.$$(view, R.id.content);
|
||||
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);
|
||||
mFastScroller = (FastScroller) ViewUtils.$$(content, R.id.fast_scroller);
|
||||
mTip = (TextView) ViewUtils.$$(view, R.id.tip);
|
||||
mViewTransition = new ViewTransition(content, mTip);
|
||||
|
||||
Context context = getContext();
|
||||
AssertUtils.assertNotNull(context);
|
||||
@@ -201,7 +205,7 @@ public class HistoryScene extends ToolbarScene {
|
||||
|
||||
Drawable drawable = ContextCompat.getDrawable(context, R.drawable.big_history);
|
||||
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
|
||||
tip.setCompoundDrawables(null, drawable, null, null);
|
||||
mTip.setCompoundDrawables(null, drawable, null, null);
|
||||
|
||||
RecyclerViewTouchActionGuardManager guardManager = new RecyclerViewTouchActionGuardManager();
|
||||
guardManager.setInterceptVerticalScrollingWhileAnimationRunning(true);
|
||||
@@ -234,10 +238,10 @@ public class HistoryScene extends ToolbarScene {
|
||||
guardManager.attachRecyclerView(mRecyclerView);
|
||||
swipeManager.attachRecyclerView(mRecyclerView);
|
||||
|
||||
fastScroller.attachToRecyclerView(mRecyclerView);
|
||||
mFastScroller.attachToRecyclerView(mRecyclerView);
|
||||
HandlerDrawable handlerDrawable = new HandlerDrawable();
|
||||
handlerDrawable.setColor(AttrResources.getAttrColor(context, R.attr.widgetColorThemeAccent));
|
||||
fastScroller.setHandlerDrawable(handlerDrawable);
|
||||
mFastScroller.setHandlerDrawable(handlerDrawable);
|
||||
|
||||
updateLazyList();
|
||||
updateView(false);
|
||||
@@ -246,7 +250,7 @@ public class HistoryScene extends ToolbarScene {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
setTitle(R.string.history);
|
||||
setNavigationIcon(new DrawerArrowDrawable(getContext(), Color.WHITE));
|
||||
@@ -698,14 +702,21 @@ public class HistoryScene 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);
|
||||
}
|
||||
View statusBarBackground = v.findViewById(R.id.status_bar_background);
|
||||
statusBarBackground.getLayoutParams().height = insets1.top;
|
||||
statusBarBackground.setBackgroundColor(AttrResources.getAttrColor(requireContext(), R.attr.colorPrimaryDark));
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -159,7 +159,7 @@ public final class SignInScene extends SolidScene implements EditText.OnEditorAc
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
|
||||
// Show IME
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
package com.hippo.ehviewer.ui.scene;
|
||||
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MenuItem;
|
||||
@@ -31,7 +30,6 @@ import androidx.annotation.Nullable;
|
||||
import androidx.annotation.StringRes;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.core.graphics.Insets;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.core.view.WindowInsetsCompat;
|
||||
|
||||
import com.hippo.android.resource.AttrResources;
|
||||
@@ -57,16 +55,6 @@ public abstract class ToolbarScene extends BaseScene {
|
||||
View view = inflater.inflate(R.layout.scene_toolbar, container, false);
|
||||
Toolbar toolbar = view.findViewById(R.id.toolbar);
|
||||
FrameLayout contentPanel = view.findViewById(R.id.content_panel);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && !(this instanceof GalleryCommentsScene)) {
|
||||
ViewCompat.setOnApplyWindowInsetsListener(view, (v, insets) -> {
|
||||
Insets insets1 = insets.getInsets(WindowInsetsCompat.Type.systemBars() | WindowInsetsCompat.Type.ime());
|
||||
view.setPadding(insets1.left, 0, insets1.right, insets1.bottom);
|
||||
View statusBarBackground = view.findViewById(R.id.status_bar_background);
|
||||
statusBarBackground.getLayoutParams().height = insets1.top;
|
||||
statusBarBackground.setBackgroundColor(AttrResources.getAttrColor(requireContext(), R.attr.colorPrimaryDark));
|
||||
return WindowInsetsCompat.CONSUMED;
|
||||
});
|
||||
}
|
||||
|
||||
View contentView = onCreateViewWithToolbar(inflater, contentPanel, savedInstanceState);
|
||||
if (contentView == null) {
|
||||
@@ -85,7 +73,7 @@ public abstract class ToolbarScene extends BaseScene {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
if (mToolbar != null) {
|
||||
if (mTempTitle != null) {
|
||||
|
||||
@@ -43,7 +43,7 @@ public final class WarningScene extends SolidScene implements View.OnClickListen
|
||||
return false;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@NonNull
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
|
||||
@Nullable Bundle savedInstanceState) {
|
||||
|
||||
@@ -54,6 +54,10 @@ 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) {
|
||||
}
|
||||
@@ -107,12 +111,15 @@ public class SceneFragment extends Fragment implements OnApplyWindowInsetsListen
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("deprecation")
|
||||
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
|
||||
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.setBackgroundDrawable(AttrResources.getAttrDrawable(getContext(), android.R.attr.windowBackground));
|
||||
view.setBackground(AttrResources.getAttrDrawable(getContext(), android.R.attr.windowBackground));
|
||||
|
||||
// Notify
|
||||
FragmentActivity activity = getActivity();
|
||||
@@ -171,7 +178,7 @@ public class SceneFragment extends Fragment implements OnApplyWindowInsetsListen
|
||||
@Override
|
||||
public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) {
|
||||
Insets insets1 = insets.getInsets(WindowInsetsCompat.Type.systemBars() | WindowInsetsCompat.Type.ime());
|
||||
v.setPadding(insets1.left, insets1.top, insets1.right, insets1.bottom);
|
||||
v.setPadding(paddingLeft + insets1.left, insets1.top + paddingTop, paddingRight + insets1.right, insets1.bottom + paddingBottom);
|
||||
return WindowInsetsCompat.CONSUMED;
|
||||
}
|
||||
|
||||
|
||||
@@ -89,6 +89,8 @@ public class ContentLayout extends FrameLayout {
|
||||
|
||||
private void init(Context context) {
|
||||
LayoutInflater.from(context).inflate(R.layout.widget_content_layout, this);
|
||||
setClipChildren(false);
|
||||
setClipToPadding(false);
|
||||
|
||||
mProgressView = findViewById(R.id.progress);
|
||||
mTipView = findViewById(R.id.tip);
|
||||
@@ -171,7 +173,7 @@ public class ContentLayout extends FrameLayout {
|
||||
mRecyclerView.getPaddingTop(), mRecyclerView.getPaddingRight(),
|
||||
mRecyclerViewOriginBottom + fitPaddingBottom);
|
||||
mTipView.setPadding(mTipView.getPaddingLeft(), mTipView.getPaddingTop(), mTipView.getPaddingRight(), fitPaddingBottom);
|
||||
mProgressView.setPadding(mTipView.getPaddingLeft(), mTipView.getPaddingTop(), mTipView.getPaddingRight(), fitPaddingBottom);
|
||||
mProgressView.setPadding(mProgressView.getPaddingLeft(), mProgressView.getPaddingTop(), mProgressView.getPaddingRight(), fitPaddingBottom);
|
||||
mFastScroller.setPadding(mFastScroller.getPaddingLeft(), mFastScroller.getPaddingTop(), mFastScroller.getPaddingRight(), fitPaddingBottom);
|
||||
if (fitPaddingBottom > LayoutUtils.dp2pix(getContext(), 16)) {
|
||||
mBottomProgress.setPadding(0, 0, 0, fitPaddingBottom);
|
||||
|
||||
Reference in new issue
Block a user