Skip to content

Commit e7165d9

Browse files
committed
Make compatible with edge-to-edge (API 35)
1 parent 732ec1c commit e7165d9

File tree

9 files changed

+38
-7
lines changed

9 files changed

+38
-7
lines changed

uhabits-android/build.gradle.kts

+2
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,14 @@ android {
4444

4545
namespace = "org.isoron.uhabits"
4646
compileSdk = 34
47+
// compileSdkPreview = "VanillaIceCream"
4748

4849
defaultConfig {
4950
versionCode = 20200
5051
versionName = "2.2.0"
5152
minSdk = 28
5253
targetSdk = 34
54+
// targetSdkPreview = "VanillaIceCream"
5355
applicationId = "org.isoron.uhabits"
5456
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
5557
}

uhabits-android/src/main/java/org/isoron/uhabits/activities/about/AboutView.kt

+2
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import org.isoron.uhabits.BuildConfig
2626
import org.isoron.uhabits.R
2727
import org.isoron.uhabits.core.models.PaletteColor
2828
import org.isoron.uhabits.databinding.AboutBinding
29+
import org.isoron.uhabits.utils.applyRootViewInsets
2930
import org.isoron.uhabits.utils.currentTheme
3031
import org.isoron.uhabits.utils.setupToolbar
3132

@@ -54,5 +55,6 @@ class AboutView(
5455
binding.tvTranslate.setOnClickListener { screen.showTranslationWebsite() }
5556
binding.tvVersion.setOnClickListener { screen.onPressDeveloperCountdown() }
5657
binding.tvVersion.text = String.format(version, BuildConfig.VERSION_NAME)
58+
applyRootViewInsets()
5759
}
5860
}

uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitActivity.kt

+5-4
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ package org.isoron.uhabits.activities.habits.edit
2222
import android.annotation.SuppressLint
2323
import android.content.res.ColorStateList
2424
import android.content.res.Resources
25-
import android.graphics.Color
2625
import android.os.Bundle
2726
import android.text.Html
2827
import android.text.Spanned
@@ -53,7 +52,8 @@ import org.isoron.uhabits.core.models.PaletteColor
5352
import org.isoron.uhabits.core.models.Reminder
5453
import org.isoron.uhabits.core.models.WeekdayList
5554
import org.isoron.uhabits.databinding.ActivityEditHabitBinding
56-
import org.isoron.uhabits.utils.ColorUtils
55+
import org.isoron.uhabits.utils.applyRootViewInsets
56+
import org.isoron.uhabits.utils.applyToolbarInsets
5757
import org.isoron.uhabits.utils.dismissCurrentAndShow
5858
import org.isoron.uhabits.utils.formatTime
5959
import org.isoron.uhabits.utils.toFormattedString
@@ -94,6 +94,8 @@ class EditHabitActivity : AppCompatActivity() {
9494
themeSwitcher.apply()
9595

9696
binding = ActivityEditHabitBinding.inflate(layoutInflater)
97+
binding.root.applyRootViewInsets()
98+
binding.toolbar.applyToolbarInsets()
9799
setContentView(binding.root)
98100

99101
if (intent.hasExtra("habitId")) {
@@ -352,8 +354,7 @@ class EditHabitActivity : AppCompatActivity() {
352354
androidColor = themeSwitcher.currentTheme.color(color).toInt()
353355
binding.colorButton.backgroundTintList = ColorStateList.valueOf(androidColor)
354356
if (!themeSwitcher.isNightMode) {
355-
val darkerAndroidColor = ColorUtils.mixColors(Color.BLACK, androidColor, 0.15f)
356-
window.statusBarColor = darkerAndroidColor
357+
window.statusBarColor = androidColor
357358
binding.toolbar.setBackgroundColor(androidColor)
358359
}
359360
}

uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsActivity.kt

+2
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ import org.isoron.uhabits.inject.ActivityContextModule
4545
import org.isoron.uhabits.inject.DaggerHabitsActivityComponent
4646
import org.isoron.uhabits.inject.HabitsActivityComponent
4747
import org.isoron.uhabits.inject.HabitsApplicationComponent
48+
import org.isoron.uhabits.utils.applyRootViewInsets
4849
import org.isoron.uhabits.utils.dismissCurrentDialog
4950
import org.isoron.uhabits.utils.restartWithFade
5051

@@ -100,6 +101,7 @@ class ListHabitsActivity : AppCompatActivity(), Preferences.Listener {
100101
menu = component.listHabitsMenu
101102
Thread.setDefaultUncaughtExceptionHandler(BaseExceptionHandler(this))
102103
component.listHabitsBehavior.onStartup()
104+
rootView.applyRootViewInsets()
103105
setContentView(rootView)
104106
}
105107

uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitActivity.kt

+2
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ import org.isoron.uhabits.core.ui.screens.habits.show.ShowHabitMenuPresenter
4949
import org.isoron.uhabits.core.ui.screens.habits.show.ShowHabitPresenter
5050
import org.isoron.uhabits.core.ui.views.OnDateClickedListener
5151
import org.isoron.uhabits.intents.IntentFactory
52+
import org.isoron.uhabits.utils.applyRootViewInsets
5253
import org.isoron.uhabits.utils.currentTheme
5354
import org.isoron.uhabits.utils.dismissCurrentAndShow
5455
import org.isoron.uhabits.utils.dismissCurrentDialog
@@ -109,6 +110,7 @@ class ShowHabitActivity : AppCompatActivity(), CommandRunner.Listener {
109110
)
110111

111112
view.setListener(presenter)
113+
view.applyRootViewInsets()
112114
setContentView(view)
113115
}
114116

uhabits-android/src/main/java/org/isoron/uhabits/activities/settings/SettingsActivity.kt

+2
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import org.isoron.uhabits.R
2626
import org.isoron.uhabits.activities.AndroidThemeSwitcher
2727
import org.isoron.uhabits.core.models.PaletteColor
2828
import org.isoron.uhabits.databinding.SettingsActivityBinding
29+
import org.isoron.uhabits.utils.applyRootViewInsets
2930
import org.isoron.uhabits.utils.setupToolbar
3031

3132
class SettingsActivity : AppCompatActivity() {
@@ -42,6 +43,7 @@ class SettingsActivity : AppCompatActivity() {
4243
color = PaletteColor(11),
4344
theme = themeSwitcher.currentTheme
4445
)
46+
binding.root.applyRootViewInsets()
4547
setContentView(binding.root)
4648
}
4749
}

uhabits-android/src/main/java/org/isoron/uhabits/automation/EditSettingActivity.kt

+2
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import androidx.appcompat.app.AppCompatActivity
2424
import org.isoron.uhabits.HabitsApplication
2525
import org.isoron.uhabits.activities.AndroidThemeSwitcher
2626
import org.isoron.uhabits.core.models.HabitMatcher
27+
import org.isoron.uhabits.utils.applyRootViewInsets
2728

2829
class EditSettingActivity : AppCompatActivity() {
2930
override fun onCreate(savedInstanceState: Bundle?) {
@@ -45,6 +46,7 @@ class EditSettingActivity : AppCompatActivity() {
4546
onSave = controller::onSave,
4647
args = args
4748
)
49+
view.applyRootViewInsets()
4850
setContentView(view)
4951
}
5052
}

uhabits-android/src/main/java/org/isoron/uhabits/utils/ViewExtensions.kt

+20-2
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ import androidx.annotation.StringRes
4646
import androidx.appcompat.app.AppCompatActivity
4747
import androidx.appcompat.widget.Toolbar
4848
import androidx.core.content.FileProvider
49+
import androidx.core.view.ViewCompat
50+
import androidx.core.view.WindowInsetsCompat
4951
import com.google.android.material.snackbar.Snackbar
5052
import org.isoron.platform.gui.toInt
5153
import org.isoron.uhabits.HabitsApplication
@@ -180,10 +182,10 @@ fun View.setupToolbar(
180182
} else {
181183
theme.color(color).toInt()
182184
}
183-
val darkerColor = ColorUtils.mixColors(toolbarColor, Color.BLACK, 0.75f)
184185
toolbar.background = ColorDrawable(toolbarColor)
186+
toolbar.applyToolbarInsets()
185187
val activity = context as AppCompatActivity
186-
activity.window.statusBarColor = darkerColor
188+
activity.window.statusBarColor = toolbarColor
187189
activity.setSupportActionBar(toolbar)
188190
activity.supportActionBar?.setDisplayHomeAsUpEnabled(displayHomeAsUpEnabled)
189191
}
@@ -245,3 +247,19 @@ fun View.getCenter(): PointF {
245247
viewLocation[1] -= this.height / 2
246248
return PointF(viewLocation[0].toFloat(), viewLocation[1].toFloat())
247249
}
250+
251+
fun View.applyRootViewInsets() {
252+
ViewCompat.setOnApplyWindowInsetsListener(this) { view, insets ->
253+
val systemBarsInsets = insets.getInsets(WindowInsetsCompat.Type.systemBars())
254+
view.setPadding(systemBarsInsets.left, 0, systemBarsInsets.right, systemBarsInsets.bottom)
255+
insets
256+
}
257+
}
258+
259+
fun View.applyToolbarInsets() {
260+
ViewCompat.setOnApplyWindowInsetsListener(this) { view, insets ->
261+
val systemBarsInsets = insets.getInsets(WindowInsetsCompat.Type.systemBars())
262+
view.setPadding(0, systemBarsInsets.top, 0, 0)
263+
insets
264+
}
265+
}

uhabits-android/src/main/res/values/styles.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@
243243

244244
<style name="Toolbar">
245245
<item name="android:layout_width">match_parent</item>
246-
<item name="android:layout_height">?actionBarSize</item>
246+
<item name="android:layout_height">wrap_content</item>
247247
<item name="android:background">?colorPrimary</item>
248248
<item name="android:theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>
249249
</style>

0 commit comments

Comments
 (0)