From 3551174277d2c5f4acc7cdb04b2c674ff1df8170 Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Mon, 14 Oct 2024 20:01:40 +0530 Subject: [PATCH] Support edge to edge properly everywhere This reverts commit 74373d478b7c71da8bb497279e4a177db7a5e0b7. --- .../java/com/aurora/store/MainActivity.kt | 24 ++++++-------- .../store/data/activity/InstallActivity.kt | 2 ++ .../view/ui/details/AppDetailsFragment.kt | 21 +++++++++++++ .../view/ui/onboarding/OnboardingFragment.kt | 9 ++++++ .../view/ui/search/SearchResultsFragment.kt | 13 ++++++++ app/src/main/res/layout/fragment_about.xml | 4 ++- .../res/layout/fragment_search_result.xml | 5 +-- .../res/layout/layout_details_install.xml | 31 ------------------- app/src/main/res/values/dimens.xml | 2 +- 9 files changed, 62 insertions(+), 49 deletions(-) diff --git a/app/src/main/java/com/aurora/store/MainActivity.kt b/app/src/main/java/com/aurora/store/MainActivity.kt index e6fef136f..8cdf83552 100644 --- a/app/src/main/java/com/aurora/store/MainActivity.kt +++ b/app/src/main/java/com/aurora/store/MainActivity.kt @@ -28,7 +28,9 @@ import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat -import androidx.core.view.updatePadding +import androidx.core.view.WindowInsetsCompat.Type.displayCutout +import androidx.core.view.WindowInsetsCompat.Type.ime +import androidx.core.view.WindowInsetsCompat.Type.systemBars import androidx.lifecycle.lifecycleScope import androidx.navigation.FloatingWindow import androidx.navigation.fragment.NavHostFragment @@ -71,24 +73,18 @@ class MainActivity : AppCompatActivity() { MigrationReceiver.runMigrationsIfRequired(this) enableEdgeToEdge() - super.onCreate(savedInstanceState) B = ActivityMainBinding.inflate(layoutInflater) - - ViewCompat.setOnApplyWindowInsetsListener(B.root) { view, windowInsets -> - val statusBarInset = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) - val navigationBarInset = - windowInsets.getInsets(WindowInsetsCompat.Type.navigationBars()) - - view.updatePadding(0, statusBarInset.top, 0, navigationBarInset.bottom) - - WindowInsetsCompat.CONSUMED - } - - setContentView(B.root) + // Adjust root view's paddings for edgeToEdge display + ViewCompat.setOnApplyWindowInsetsListener(B.root) { root, windowInsets -> + val insets = windowInsets.getInsets(systemBars() or displayCutout() or ime()) + root.setPadding(0, insets.top, 0, 0) + windowInsets + } + val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment val navController = navHostFragment.navController diff --git a/app/src/main/java/com/aurora/store/data/activity/InstallActivity.kt b/app/src/main/java/com/aurora/store/data/activity/InstallActivity.kt index 9b762510c..68248c718 100644 --- a/app/src/main/java/com/aurora/store/data/activity/InstallActivity.kt +++ b/app/src/main/java/com/aurora/store/data/activity/InstallActivity.kt @@ -3,6 +3,7 @@ package com.aurora.store.data.activity import android.content.pm.PackageInstaller.SessionCallback import android.os.Bundle import android.util.Log +import androidx.activity.enableEdgeToEdge import androidx.appcompat.app.AppCompatActivity import androidx.core.content.IntentCompat import com.aurora.Constants @@ -22,6 +23,7 @@ class InstallActivity : AppCompatActivity() { private lateinit var sessionCallback: SessionCallback override fun onCreate(savedInstanceState: Bundle?) { + enableEdgeToEdge() super.onCreate(savedInstanceState) val download = diff --git a/app/src/main/java/com/aurora/store/view/ui/details/AppDetailsFragment.kt b/app/src/main/java/com/aurora/store/view/ui/details/AppDetailsFragment.kt index e2ca6985b..237db1f05 100644 --- a/app/src/main/java/com/aurora/store/view/ui/details/AppDetailsFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/details/AppDetailsFragment.kt @@ -26,11 +26,15 @@ import android.net.Uri import android.os.Bundle import android.provider.Settings import android.view.View +import android.view.ViewGroup import android.widget.LinearLayout import android.widget.RelativeLayout import android.widget.Toast import androidx.core.content.ContextCompat import androidx.core.text.HtmlCompat +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.updateLayoutParams import androidx.fragment.app.activityViewModels import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController @@ -183,6 +187,23 @@ class AppDetailsFragment : BaseFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + // Adjust margins for edgeToEdge display + ViewCompat.setOnApplyWindowInsetsListener(binding.layoutDetailsDev.root) { v, w -> + val insets = w.getInsets(WindowInsetsCompat.Type.navigationBars()) + v.updateLayoutParams { + bottomMargin += insets.bottom + } + WindowInsetsCompat.CONSUMED + } + + ViewCompat.setOnApplyWindowInsetsListener(binding.layoutDetailsInstall.viewFlipper) { v, w -> + val insets = w.getInsets(WindowInsetsCompat.Type.navigationBars()) + v.updateLayoutParams { + bottomMargin += insets.bottom + } + WindowInsetsCompat.CONSUMED + } + if (args.app != null) { app = args.app!! inflatePartialApp() diff --git a/app/src/main/java/com/aurora/store/view/ui/onboarding/OnboardingFragment.kt b/app/src/main/java/com/aurora/store/view/ui/onboarding/OnboardingFragment.kt index fab8f0c09..8011bcc53 100644 --- a/app/src/main/java/com/aurora/store/view/ui/onboarding/OnboardingFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/onboarding/OnboardingFragment.kt @@ -21,6 +21,8 @@ package com.aurora.store.view.ui.onboarding import android.os.Bundle import android.view.View +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import androidx.lifecycle.Lifecycle @@ -82,6 +84,13 @@ class OnboardingFragment : BaseFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + // Adjust layout margins for edgeToEdge display + ViewCompat.setOnApplyWindowInsetsListener(binding.layoutBottom) { layout, windowInsets -> + val insets = windowInsets.getInsets(WindowInsetsCompat.Type.navigationBars()) + layout.setPadding(0, 0, 0, insets.bottom) + WindowInsetsCompat.CONSUMED + } + val isDefaultPrefLoaded = Preferences.getBoolean(requireContext(), PREFERENCE_DEFAULT) if (!isDefaultPrefLoaded) { save(PREFERENCE_DEFAULT, true) diff --git a/app/src/main/java/com/aurora/store/view/ui/search/SearchResultsFragment.kt b/app/src/main/java/com/aurora/store/view/ui/search/SearchResultsFragment.kt index f425e1d81..f14385df2 100644 --- a/app/src/main/java/com/aurora/store/view/ui/search/SearchResultsFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/search/SearchResultsFragment.kt @@ -26,8 +26,12 @@ import android.text.Editable import android.text.TextWatcher import android.view.KeyEvent import android.view.View +import android.view.ViewGroup import android.view.inputmethod.EditorInfo import android.widget.TextView +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.updateLayoutParams import androidx.fragment.app.viewModels import androidx.navigation.fragment.findNavController import com.aurora.extensions.hideKeyboard @@ -67,6 +71,15 @@ class SearchResultsFragment : BaseFragment(), override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + // Adjust FAB margins for edgeToEdge display + ViewCompat.setOnApplyWindowInsetsListener(binding.filterFab) { _, windowInsets -> + val insets = windowInsets.getInsets(WindowInsetsCompat.Type.navigationBars()) + binding.filterFab.updateLayoutParams { + bottomMargin += insets.bottom + } + WindowInsetsCompat.CONSUMED + } + sharedPreferences = Preferences.getPrefs(view.context) sharedPreferences.registerOnSharedPreferenceChangeListener(this) diff --git a/app/src/main/res/layout/fragment_about.xml b/app/src/main/res/layout/fragment_about.xml index d15793d5a..b71683a0c 100644 --- a/app/src/main/res/layout/fragment_about.xml +++ b/app/src/main/res/layout/fragment_about.xml @@ -79,7 +79,9 @@ android:clipToPadding="false" android:orientation="vertical" android:overScrollMode="never" - android:padding="@dimen/padding_small" + android:paddingHorizontal="@dimen/padding_small" + android:paddingTop="@dimen/padding_small" + android:paddingBottom="@dimen/height_bottom_adj" app:itemSpacing="@dimen/margin_small" tools:listitem="@layout/view_link" /> diff --git a/app/src/main/res/layout/fragment_search_result.xml b/app/src/main/res/layout/fragment_search_result.xml index 6e71d636b..80cf9a3f1 100644 --- a/app/src/main/res/layout/fragment_search_result.xml +++ b/app/src/main/res/layout/fragment_search_result.xml @@ -45,8 +45,9 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/divider" - android:layout_marginTop="5dp" + android:clipToPadding="true" android:paddingTop="@dimen/padding_normal" + android:paddingBottom="@dimen/height_bottom_adj" tools:listitem="@layout/view_app_list" /> @@ -59,4 +60,4 @@ android:layout_marginBottom="@dimen/margin_normal" android:text="@string/action_filter" app:icon="@drawable/ic_filter" /> - \ No newline at end of file + diff --git a/app/src/main/res/layout/layout_details_install.xml b/app/src/main/res/layout/layout_details_install.xml index ea731edf6..fcb8fc683 100644 --- a/app/src/main/res/layout/layout_details_install.xml +++ b/app/src/main/res/layout/layout_details_install.xml @@ -30,7 +30,6 @@ android:paddingEnd="@dimen/padding_small" android:showDividers="middle" app:behavior_hideable="false" - app:behavior_peekHeight="@dimen/height_peek" app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"> - - - - - - - diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 95c9d07c9..3c6e0acd3 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -50,7 +50,7 @@ 120dp 68dp - 100dp + 125dp 128dp 3dp