From f143e01685e5e9d0af686b4cfe188be3844a7633 Mon Sep 17 00:00:00 2001 From: Katharine Chui Date: Sat, 13 Nov 2021 13:32:32 +0800 Subject: [PATCH] fixes bottom sheet height after rotating in fullscreen, removes extra top padding in fullscreen mode, 204(5)->8 --- .../card_locker/LoyaltyCardViewActivity.java | 30 ++++++++++--------- .../main/java/protect/card_locker/Utils.java | 2 +- .../res/layout/loyalty_card_view_layout.xml | 2 +- .../LoyaltyCardViewActivityTest.java | 9 +++--- 4 files changed, 23 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java index d91aeb90e..058d183eb 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java @@ -17,6 +17,7 @@ import android.view.Menu; import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; +import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.view.Window; import android.view.WindowManager; @@ -362,17 +363,23 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { - bottomSheet.getViewTreeObserver().removeOnGlobalLayoutListener(this); + Log.d("onGlobalLayout", "checking if bottom sheet size has to be changed"); DisplayMetrics displayMetrics = getResources().getDisplayMetrics(); int height = displayMetrics.heightPixels; int maxHeight = height - appBarLayout.getHeight() - bottomSheetButton.getHeight(); Log.d(TAG, "Button sheet should be " + maxHeight + " pixels high"); - bottomSheetContentWrapper.setLayoutParams( - new LinearLayout.LayoutParams( - LinearLayout.LayoutParams.MATCH_PARENT, - maxHeight - ) - ); + // setting it to the same value triggers this callback again on android 11, but it has to stay for when the activity starts fullscreen + // so check for if changes are needed instead of throwing the callback away + ViewGroup.LayoutParams params = bottomSheetContentWrapper.getLayoutParams(); + if (params.height != maxHeight || params.width != LinearLayout.LayoutParams.MATCH_PARENT) { + Log.d("onGlobalLayout", "setting max height: " + maxHeight); + bottomSheetContentWrapper.setLayoutParams( + new LinearLayout.LayoutParams( + LinearLayout.LayoutParams.MATCH_PARENT, + maxHeight + ) + ); + } } }); @@ -875,16 +882,13 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements actionBar.hide(); } - iconImage.setVisibility(View.GONE); - // Hide toolbars // // Appbar needs to be invisible and have padding removed // Or the barcode will be centered instead of on top of the screen // Don't ask me why... appBarLayout.setVisibility(View.INVISIBLE); - collapsingToolbarLayout.setVisibility(View.GONE); - findViewById(R.id.toolbar_landscape).setVisibility(View.GONE); + relativeLayout.setVisibility(View.GONE); // Hide other UI elements cardIdFieldView.setVisibility(View.GONE); @@ -917,14 +921,12 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements actionBar.show(); } - iconImage.setVisibility(View.VISIBLE); - // Show appropriate toolbar // And restore 24dp paddingTop for appBarLayout appBarLayout.setVisibility(View.VISIBLE); DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); - setupOrientation(); + relativeLayout.setVisibility(View.VISIBLE); // Show other UI elements cardIdFieldView.setVisibility(View.VISIBLE); diff --git a/app/src/main/java/protect/card_locker/Utils.java b/app/src/main/java/protect/card_locker/Utils.java index 3e28026e8..34e697bd4 100644 --- a/app/src/main/java/protect/card_locker/Utils.java +++ b/app/src/main/java/protect/card_locker/Utils.java @@ -62,7 +62,7 @@ public class Utils { static final double LUMINANCE_MIDPOINT = 0.5; static final int BITMAP_SIZE_SMALL = 512; - static final int BITMAP_SIZE_BIG = 2045; + static final int BITMAP_SIZE_BIG = 2048; static public LetterBitmap generateIcon(Context context, LoyaltyCard loyaltyCard, boolean forShortcut) { return generateIcon(context, loyaltyCard.store, loyaltyCard.headerColor, forShortcut); diff --git a/app/src/main/res/layout/loyalty_card_view_layout.xml b/app/src/main/res/layout/loyalty_card_view_layout.xml index 93a3f10e5..368cefcb3 100644 --- a/app/src/main/res/layout/loyalty_card_view_layout.xml +++ b/app/src/main/res/layout/loyalty_card_view_layout.xml @@ -266,7 +266,7 @@ android:layout_height="?actionBarSize" android:layout_alignParentTop="true" android:background="@android:color/transparent" - android:paddingTop="6dp" + android:paddingTop="0dp" android:theme="@style/CardView.ActionBarTheme" android:visibility="gone" app:contentInsetStart="72.0dip" diff --git a/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java b/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java index 76fcbc8f4..0c1c93f67 100644 --- a/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java +++ b/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java @@ -1274,6 +1274,7 @@ public class LoyaltyCardViewActivityTest ImageView mainImage = activity.findViewById(R.id.mainImage); View collapsingToolbarLayout = activity.findViewById(R.id.collapsingToolbarLayout); + View relativeLayout = activity.findViewById(R.id.relative_layout); View bottomSheet = activity.findViewById(R.id.bottom_sheet); ImageButton maximizeButton = activity.findViewById(R.id.maximizeButton); ImageButton minimizeButton = activity.findViewById(R.id.minimizeButton); @@ -1305,7 +1306,7 @@ public class LoyaltyCardViewActivityTest assertEquals(uiOptions | View.SYSTEM_UI_FLAG_FULLSCREEN, uiOptions); // Elements should not be visible (except minimize button and scaler) - assertEquals(View.GONE, collapsingToolbarLayout.getVisibility()); + assertEquals(View.GONE, relativeLayout.getVisibility()); assertEquals(View.GONE, bottomSheet.getVisibility()); assertEquals(View.GONE, maximizeButton.getVisibility()); assertEquals(View.VISIBLE, minimizeButton.getVisibility()); @@ -1319,7 +1320,7 @@ public class LoyaltyCardViewActivityTest uiOptions = activity.getWindow().getDecorView().getSystemUiVisibility(); assertNotEquals(uiOptions | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY, uiOptions); assertNotEquals(uiOptions | View.SYSTEM_UI_FLAG_FULLSCREEN, uiOptions); - assertEquals(View.VISIBLE, collapsingToolbarLayout.getVisibility()); + assertEquals(View.VISIBLE, relativeLayout.getVisibility()); assertEquals(View.VISIBLE, bottomSheet.getVisibility()); assertEquals(View.VISIBLE, maximizeButton.getVisibility()); assertEquals(View.GONE, minimizeButton.getVisibility()); @@ -1333,7 +1334,7 @@ public class LoyaltyCardViewActivityTest uiOptions = activity.getWindow().getDecorView().getSystemUiVisibility(); assertEquals(uiOptions | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY, uiOptions); assertEquals(uiOptions | View.SYSTEM_UI_FLAG_FULLSCREEN, uiOptions); - assertEquals(View.GONE, collapsingToolbarLayout.getVisibility()); + assertEquals(View.GONE, relativeLayout.getVisibility()); assertEquals(View.GONE, bottomSheet.getVisibility()); assertEquals(View.GONE, maximizeButton.getVisibility()); assertEquals(View.VISIBLE, minimizeButton.getVisibility()); @@ -1347,7 +1348,7 @@ public class LoyaltyCardViewActivityTest uiOptions = activity.getWindow().getDecorView().getSystemUiVisibility(); assertNotEquals(uiOptions | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY, uiOptions); assertNotEquals(uiOptions | View.SYSTEM_UI_FLAG_FULLSCREEN, uiOptions); - assertEquals(View.VISIBLE, collapsingToolbarLayout.getVisibility()); + assertEquals(View.VISIBLE, relativeLayout.getVisibility()); assertEquals(View.VISIBLE, bottomSheet.getVisibility()); assertEquals(View.VISIBLE, maximizeButton.getVisibility()); assertEquals(View.GONE, minimizeButton.getVisibility());