Aperture: Redo edge-to-edge configuration
Change-Id: I4b1aced65cc8354306fca9aaaad5bb06c6094366
diff --git a/app/src/main/java/org/lineageos/aperture/CameraActivity.kt b/app/src/main/java/org/lineageos/aperture/CameraActivity.kt
index adb11bf..ae5621c 100644
--- a/app/src/main/java/org/lineageos/aperture/CameraActivity.kt
+++ b/app/src/main/java/org/lineageos/aperture/CameraActivity.kt
@@ -37,6 +37,7 @@
import android.view.OrientationEventListener
import android.view.ScaleGestureDetector
import android.view.View
+import android.view.ViewGroup
import android.view.WindowManager
import android.widget.Button
import android.widget.HorizontalScrollView
@@ -72,6 +73,8 @@
import androidx.core.location.LocationListenerCompat
import androidx.core.location.LocationManagerCompat
import androidx.core.location.LocationRequestCompat
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowCompat
import androidx.core.view.WindowCompat.getInsetsController
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.WindowInsetsControllerCompat
@@ -160,7 +163,9 @@
private val infoChipView by lazy { findViewById<InfoChipView>(R.id.infoChipView) }
private val lensSelectorLayout by lazy { findViewById<LensSelectorLayout>(R.id.lensSelectorLayout) }
private val levelerView by lazy { findViewById<LevelerView>(R.id.levelerView) }
+ private val mainLayout by lazy { findViewById<ConstraintLayout>(R.id.mainLayout) }
private val micButton by lazy { findViewById<Button>(R.id.micButton) }
+ private val modeSelectorLayout by lazy { findViewById<ConstraintLayout>(R.id.modeSelectorLayout) }
private val photoModeButton by lazy { findViewById<MaterialButton>(R.id.photoModeButton) }
private val previewBlurView by lazy { findViewById<PreviewBlurView>(R.id.previewBlurView) }
private val primaryBarLayoutGroupPhoto by lazy { findViewById<Group>(R.id.primaryBarLayoutGroupPhoto) }
@@ -513,6 +518,8 @@
setContentView(R.layout.activity_camera)
+ WindowCompat.setDecorFitsSystemWindows(window, false)
+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1
&& keyguardManager.isKeyguardLocked
) {
@@ -583,6 +590,25 @@
// Select a camera
camera = cameraManager.getCameraOfFacingOrFirstAvailable(initialCameraFacing, cameraMode)
+ // Setup window insets
+ ViewCompat.setOnApplyWindowInsetsListener(mainLayout) { _, windowInsets ->
+ val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
+
+ modeSelectorLayout.updateLayoutParams<ViewGroup.MarginLayoutParams> {
+ bottomMargin = insets.bottom
+ leftMargin = insets.left
+ rightMargin = insets.right
+ }
+
+ capturePreviewLayout.updateLayoutParams<ViewGroup.MarginLayoutParams> {
+ bottomMargin = insets.bottom
+ leftMargin = insets.left
+ rightMargin = insets.right
+ }
+
+ windowInsets
+ }
+
// Set secondary top bar button callbacks
aspectRatioButton.setOnClickListener { cycleAspectRatio() }
videoQualityButton.setOnClickListener { cycleVideoQuality() }
diff --git a/app/src/main/java/org/lineageos/aperture/SettingsActivity.kt b/app/src/main/java/org/lineageos/aperture/SettingsActivity.kt
index 0e8f8b3..bd4bc27 100644
--- a/app/src/main/java/org/lineageos/aperture/SettingsActivity.kt
+++ b/app/src/main/java/org/lineageos/aperture/SettingsActivity.kt
@@ -8,23 +8,32 @@
import android.annotation.SuppressLint
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
-import android.os.Build
import android.os.Bundle
+import android.view.LayoutInflater
import android.view.MenuItem
import android.view.View
+import android.view.ViewGroup
import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowCompat
+import androidx.core.view.WindowInsetsCompat
+import androidx.core.view.updateLayoutParams
import androidx.preference.ListPreference
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
import androidx.preference.SwitchPreference
+import com.google.android.material.appbar.MaterialToolbar
import org.lineageos.aperture.utils.CameraSoundsUtils
import org.lineageos.aperture.utils.PermissionsUtils
class SettingsActivity : AppCompatActivity() {
+ private val toolbar by lazy { findViewById<MaterialToolbar>(R.id.toolbar) }
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
+
setContentView(R.layout.settings_activity)
if (savedInstanceState == null) {
supportFragmentManager
@@ -33,15 +42,13 @@
.commit()
}
- setSupportActionBar(findViewById(R.id.toolbar))
+ WindowCompat.setDecorFitsSystemWindows(window, false)
+
+ setSupportActionBar(toolbar)
supportActionBar?.apply {
setDisplayHomeAsUpEnabled(true)
setDisplayShowHomeEnabled(true)
}
-
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
- window.isNavigationBarContrastEnforced = true
- }
}
override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) {
@@ -60,6 +67,28 @@
setDivider(ColorDrawable(Color.TRANSPARENT))
setDividerHeight(0)
+
+ listView?.let {
+ ViewCompat.setOnApplyWindowInsetsListener(it) { _, windowInsets ->
+ val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
+
+ it.updateLayoutParams<ViewGroup.MarginLayoutParams> {
+ bottomMargin = insets.bottom
+ leftMargin = insets.left
+ rightMargin = insets.right
+ }
+
+ windowInsets
+ }
+ }
+ }
+
+ override fun onCreateRecyclerView(
+ inflater: LayoutInflater,
+ parent: ViewGroup,
+ savedInstanceState: Bundle?
+ ) = super.onCreateRecyclerView(inflater, parent, savedInstanceState).also {
+ it.clipToPadding = false
}
}
diff --git a/app/src/main/res/layout/activity_camera.xml b/app/src/main/res/layout/activity_camera.xml
index 414001f..36e867b 100644
--- a/app/src/main/res/layout/activity_camera.xml
+++ b/app/src/main/res/layout/activity_camera.xml
@@ -9,6 +9,7 @@
android:id="@+id/mainLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ android:background="@android:color/black"
android:keepScreenOn="true"
tools:context=".CameraActivity">
diff --git a/app/src/main/res/layout/settings_activity.xml b/app/src/main/res/layout/settings_activity.xml
index 492a217..1475a16 100644
--- a/app/src/main/res/layout/settings_activity.xml
+++ b/app/src/main/res/layout/settings_activity.xml
@@ -38,11 +38,16 @@
</com.google.android.material.appbar.AppBarLayout>
- <FrameLayout
- android:id="@+id/settings"
+ <androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:layout_marginStart="8dp"
- app:layout_behavior="@string/appbar_scrolling_view_behavior" />
+ app:layout_behavior="@string/appbar_scrolling_view_behavior">
+
+ <FrameLayout
+ android:id="@+id/settings"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_marginStart="8dp" />
+ </androidx.core.widget.NestedScrollView>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 6864c9b..220d744 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -6,27 +6,26 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.Aperture" parent="Theme.Material3.DayNight.NoActionBar">
+ <item name="android:navigationBarColor">@android:color/transparent</item>
+ <item name="android:statusBarColor">@android:color/transparent</item>
+ <item name="android:windowLightStatusBar">?attr/isLightTheme</item>
<item name="dialogCornerRadius">28dp</item>
</style>
<!-- Main activity theme. -->
<style name="Theme.Aperture.Camera" parent="Theme.Material3.Dark.NoActionBar">
- <item name="android:navigationBarColor">@android:color/black</item>
- <item name="android:statusBarColor">@android:color/black</item>
+ <item name="android:navigationBarColor">@android:color/transparent</item>
+ <item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:windowBackground">@android:color/black</item>
<item name="android:windowLayoutInDisplayCutoutMode" tools:targetApi="O_MR1">
shortEdges
</item>
- <item name="android:windowTranslucentStatus">true</item>
+ <item name="android:windowLightStatusBar">?attr/isLightTheme</item>
</style>
<!-- Settings activity theme. -->
- <style name="Theme.Aperture.Settings" parent="Theme.Aperture">
+ <style name="Theme.Aperture.Settings">
<item name="android:switchStyle">@style/Theme.Aperture.Settings.Switch</item>
- <item name="android:statusBarColor">@android:color/transparent</item>
- <item name="android:navigationBarColor">@android:color/transparent</item>
- <item name="android:windowLightStatusBar">?attr/isLightTheme</item>
- <item name="android:windowTranslucentNavigation">true</item>
<item name="alertDialogTheme">@style/Theme.Aperture.Settings.AlertDialog</item>
<item name="materialAlertDialogTheme">@style/Theme.Aperture.Settings.AlertDialog</item>
<item name="preferenceTheme">@style/Theme.Aperture.Settings.Preference</item>