From 68935f14893ec111198e68bf0b99c001b56a61f2 Mon Sep 17 00:00:00 2001 From: Tong Liu <402169950@qq.com> Date: Tue, 25 Oct 2022 13:38:02 -0400 Subject: [PATCH] Closes #1092 - Fixed contents cut off on smaller screen issue. (#1095) --- .../protect/card_locker/MainActivity.java | 52 +++++++++++-------- .../protect/card_locker/ScanActivity.java | 24 +++++++-- .../camera_permission_failed_layout.xml | 3 ++ app/src/main/res/layout/content_main.xml | 29 ++++++----- .../res/layout/custom_barcode_scanner.xml | 20 +++---- app/src/main/res/values/dimens.xml | 2 +- 6 files changed, 80 insertions(+), 50 deletions(-) diff --git a/app/src/main/java/protect/card_locker/MainActivity.java b/app/src/main/java/protect/card_locker/MainActivity.java index 0eb3d36f0..9b2740971 100644 --- a/app/src/main/java/protect/card_locker/MainActivity.java +++ b/app/src/main/java/protect/card_locker/MainActivity.java @@ -12,7 +12,9 @@ import android.database.sqlite.SQLiteDatabase; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; +import android.util.DisplayMetrics; import android.util.Log; +import android.util.TypedValue; import android.view.GestureDetector; import android.view.LayoutInflater; import android.view.Menu; @@ -55,6 +57,8 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard private static final String TAG = "Catima"; public static final String RESTART_ACTIVITY_INTENT = "restart_activity_intent"; + private static final int MEDIUM_SCALE_FACTOR_DIP = 460; + private SQLiteDatabase mDatabase; private LoyaltyCardCursorAdapter mAdapter; private ActionMode mCurrentActionMode; @@ -178,28 +182,25 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard dialog.show(); return true; - } - else if(inputItem.getItemId() == R.id.action_archive){ + } else if (inputItem.getItemId() == R.id.action_archive) { for (LoyaltyCard loyaltyCard : mAdapter.getSelectedItems()) { Log.d(TAG, "Archiving card: " + loyaltyCard.id); - DBHelper.updateLoyaltyCardArchiveStatus(mDatabase, loyaltyCard.id,1); + DBHelper.updateLoyaltyCardArchiveStatus(mDatabase, loyaltyCard.id, 1); updateLoyaltyCardList(false); inputMode.finish(); invalidateOptionsMenu(); } return true; - } - else if(inputItem.getItemId() == R.id.action_unarchive){ + } else if (inputItem.getItemId() == R.id.action_unarchive) { for (LoyaltyCard loyaltyCard : mAdapter.getSelectedItems()) { Log.d(TAG, "Unarchiving card: " + loyaltyCard.id); - DBHelper.updateLoyaltyCardArchiveStatus(mDatabase, loyaltyCard.id,0); + DBHelper.updateLoyaltyCardArchiveStatus(mDatabase, loyaltyCard.id, 0); updateLoyaltyCardList(false); inputMode.finish(); invalidateOptionsMenu(); } return true; - } - else if(inputItem.getItemId() == R.id.action_star){ + } else if (inputItem.getItemId() == R.id.action_star) { for (LoyaltyCard loyaltyCard : mAdapter.getSelectedItems()) { Log.d(TAG, "Starring card: " + loyaltyCard.id); DBHelper.updateLoyaltyCardStarStatus(mDatabase, loyaltyCard.id, 1); @@ -207,8 +208,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard inputMode.finish(); } return true; - } - else if(inputItem.getItemId() == R.id.action_unstar){ + } else if (inputItem.getItemId() == R.id.action_unstar) { for (LoyaltyCard loyaltyCard : mAdapter.getSelectedItems()) { Log.d(TAG, "Unstarring card: " + loyaltyCard.id); DBHelper.updateLoyaltyCardStarStatus(mDatabase, loyaltyCard.id, 0); @@ -233,15 +233,14 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard extractIntentFields(getIntent()); SplashScreen.installSplashScreen(this); super.onCreate(inputSavedInstanceState); - if(!mArchiveMode) { + if (!mArchiveMode) { binding = MainActivityBinding.inflate(getLayoutInflater()); setTitle(R.string.app_name); setContentView(binding.getRoot()); setSupportActionBar(binding.toolbar); groupsTabLayout = binding.groups; contentMainBinding = ContentMainBinding.bind(binding.include.getRoot()); - } - else{ + } else { archiveActivityBinding = ArchiveActivityBinding.inflate(getLayoutInflater()); setTitle(R.string.archiveList); setContentView(archiveActivityBinding.getRoot()); @@ -250,7 +249,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard contentMainBinding = ContentMainBinding.bind(archiveActivityBinding.include.getRoot()); } - if(mArchiveMode){ + if (mArchiveMode) { ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { actionBar.setDisplayHomeAsUpEnabled(true); @@ -404,7 +403,10 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard groupsTabLayout.selectTab(tab); assert tab != null; mGroup = tab.getTag(); + } else if (!mArchiveMode) { + scaleScreen(); } + updateLoyaltyCardList(true); // End of active tab logic @@ -426,7 +428,6 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard @Override public void onBackPressed() { - if (!mSearchView.isIconified()) { mSearchView.setIconified(true); return; @@ -592,9 +593,9 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard @Override public boolean onCreateOptionsMenu(Menu inputMenu) { - if(!mArchiveMode) + if (!mArchiveMode) { getMenuInflater().inflate(R.menu.main_menu, inputMenu); - else{ + } else { getMenuInflater().inflate(R.menu.archive_menu, inputMenu); } @@ -632,7 +633,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard }); } - if(!mArchiveMode) { + if (!mArchiveMode) { if (DBHelper.getArchivedCardsCount(mDatabase) == 0) { inputMenu.findItem(R.id.action_archived).setVisible(false); } else { @@ -846,6 +847,16 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard toggleSelection(inputPosition); } + private void scaleScreen() { + DisplayMetrics displayMetrics = new DisplayMetrics(); + getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); + int screenHeight = displayMetrics.heightPixels; + float mediumSizePx = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,MEDIUM_SCALE_FACTOR_DIP,getResources().getDisplayMetrics()); + boolean shouldScaleSmaller = screenHeight < mediumSizePx; + + binding.include.welcomeIcon.setVisibility(shouldScaleSmaller ? View.GONE : View.VISIBLE); + } + private void toggleSelection(int inputPosition) { mAdapter.toggleSelection(inputPosition); int count = mAdapter.getSelectedItemCount(); @@ -864,11 +875,10 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard boolean hasStarred = false; boolean hasUnstarred = false; - if(!mArchiveMode) { + if (!mArchiveMode) { unarchiveItem.setVisible(false); archiveItem.setVisible(true); - } - else{ + } else { unarchiveItem.setVisible(true); archiveItem.setVisible(false); } diff --git a/app/src/main/java/protect/card_locker/ScanActivity.java b/app/src/main/java/protect/card_locker/ScanActivity.java index 13119515e..45f953dc2 100644 --- a/app/src/main/java/protect/card_locker/ScanActivity.java +++ b/app/src/main/java/protect/card_locker/ScanActivity.java @@ -9,6 +9,7 @@ import android.graphics.Color; import android.net.Uri; import android.os.Bundle; import android.provider.Settings; +import android.util.DisplayMetrics; import android.util.Log; import android.util.TypedValue; import android.view.KeyEvent; @@ -49,6 +50,9 @@ public class ScanActivity extends CatimaAppCompatActivity { private CustomBarcodeScannerBinding customBarcodeScannerBinding; private static final String TAG = "Catima"; + private static final int MEDIUM_SCALE_FACTOR_DIP = 460; + private static final int COMPAT_SCALE_FACTOR_DIP = 320; + private CaptureManager capture; private DecoratedBarcodeView barcodeScannerView; @@ -125,8 +129,10 @@ public class ScanActivity extends CatimaAppCompatActivity { protected void onResume() { super.onResume(); capture.onResume(); - if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) + if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) { showCameraPermissionMissingText(false); + } + scaleScreen(); } @Override @@ -236,10 +242,20 @@ public class ScanActivity extends CatimaAppCompatActivity { private void showCameraPermissionMissingText(boolean show) { customBarcodeScannerBinding.cameraPermissionDeniedLayout.cameraPermissionDeniedClickableArea.setOnClickListener(show ? v -> { navigateToSystemPermissionSetting(); - } : null); - customBarcodeScannerBinding.background.setBackgroundColor(show ? obtainThemeAttribute(R.attr.colorSurface) : Color.TRANSPARENT); - customBarcodeScannerBinding.cameraPermissionDeniedLayout.getRoot().setVisibility(show ? View.VISIBLE : View.GONE); + } : null); + customBarcodeScannerBinding.cardInputContainer.setBackgroundColor(show ? obtainThemeAttribute(R.attr.colorSurface) : Color.TRANSPARENT); + customBarcodeScannerBinding.cameraPermissionDeniedLayout.getRoot().setVisibility(show ? View.VISIBLE : View.GONE); + } + private void scaleScreen() { + DisplayMetrics displayMetrics = new DisplayMetrics(); + getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); + int screenHeight = displayMetrics.heightPixels; + float mediumSizePx = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,MEDIUM_SCALE_FACTOR_DIP,getResources().getDisplayMetrics()); + boolean shouldScaleSmaller = screenHeight < mediumSizePx; + + customBarcodeScannerBinding.cameraPermissionDeniedLayout.cameraPermissionDeniedIcon.setVisibility(shouldScaleSmaller ? View.GONE : View.VISIBLE); + customBarcodeScannerBinding.cameraPermissionDeniedLayout.cameraPermissionDeniedTitle.setVisibility(shouldScaleSmaller ? View.GONE : View.VISIBLE); } private int obtainThemeAttribute(int attribute) { diff --git a/app/src/main/res/layout/camera_permission_failed_layout.xml b/app/src/main/res/layout/camera_permission_failed_layout.xml index daee5822e..2d47929a6 100644 --- a/app/src/main/res/layout/camera_permission_failed_layout.xml +++ b/app/src/main/res/layout/camera_permission_failed_layout.xml @@ -15,12 +15,14 @@ android:orientation="vertical"> - + android:orientation="vertical"> + android:text="@string/noGiftCards" /> + android:visibility="gone" /> + android:visibility="gone" /> - + android:visibility="gone" + app:layoutManager="androidx.recyclerview.widget.GridLayoutManager" + app:spanCount="@integer/main_view_card_columns" /> diff --git a/app/src/main/res/layout/custom_barcode_scanner.xml b/app/src/main/res/layout/custom_barcode_scanner.xml index 19c478c46..fe4b01175 100644 --- a/app/src/main/res/layout/custom_barcode_scanner.xml +++ b/app/src/main/res/layout/custom_barcode_scanner.xml @@ -1,29 +1,27 @@ - - + + app:zxing_framing_rect_height="250dp" + app:zxing_framing_rect_width="250dp" /> + app:zxing_viewfinder_mask="@color/zxing_custom_viewfinder_mask" /> + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/camera_permission_denied_layout" + app:layout_constraintVertical_bias="1.0" />