mirror of
https://github.com/topjohnwu/Magisk.git
synced 2024-12-25 01:27:38 +00:00
Implement Edge-to-edge with newer APIs
The implementation adds a "Base" family styles, making creating themes across multiple API versions more clearer and easier.
This commit is contained in:
parent
0064b01ae0
commit
c93ada03c7
@ -1,5 +1,8 @@
|
||||
package com.topjohnwu.magisk.arch
|
||||
|
||||
import android.content.res.Resources
|
||||
import android.graphics.Color
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.view.KeyEvent
|
||||
import android.view.View
|
||||
@ -59,6 +62,31 @@ abstract class BaseUIActivity<VM : BaseViewModel, Binding : ViewDataBinding> :
|
||||
directionsDispatcher.value = null
|
||||
}
|
||||
}
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
window?.decorView?.let {
|
||||
it.systemUiVisibility = (it.systemUiVisibility
|
||||
or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
|
||||
or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|
||||
or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION)
|
||||
}
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
window?.decorView?.post {
|
||||
// If navigation bar is short enough (gesture navigation enabled), make it transparent
|
||||
if (window.decorView.rootWindowInsets?.systemWindowInsetBottom ?: 0 < Resources.getSystem().displayMetrics.density * 40) {
|
||||
window.navigationBarColor = Color.TRANSPARENT
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
||||
window.navigationBarDividerColor = Color.TRANSPARENT
|
||||
}
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||
window.isNavigationBarContrastEnforced = false
|
||||
window.isStatusBarContrastEnforced = false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun setContentView() {
|
||||
|
8
app/src/main/res/values-night/styles_md2.xml
Normal file
8
app/src/main/res/values-night/styles_md2.xml
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="SplashTheme" parent="Theme.Splash" />
|
||||
|
||||
<style name="Foundation" parent="Theme.Foundation" />
|
||||
|
||||
</resources>
|
@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<style name="SplashTheme" parent="SplashThemeBase">
|
||||
<item name="android:windowTranslucentStatus">true</item>
|
||||
<item name="android:windowTranslucentNavigation">true</item>
|
||||
</style>
|
||||
</resources>
|
18
app/src/main/res/values-v19/themes.xml
Normal file
18
app/src/main/res/values-v19/themes.xml
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="Base.V19.Theme.Splash.Light" parent="Base.V17.Theme.Splash.Light">
|
||||
<item name="android:windowTranslucentStatus">true</item>
|
||||
<item name="android:windowTranslucentNavigation">true</item>
|
||||
</style>
|
||||
|
||||
<style name="Base.V19.Theme.Splash" parent="Base.V17.Theme.Splash">
|
||||
<item name="android:windowTranslucentStatus">true</item>
|
||||
<item name="android:windowTranslucentNavigation">true</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Splash.Light" parent="Base.V19.Theme.Splash.Light" />
|
||||
|
||||
<style name="Theme.Splash" parent="Base.V19.Theme.Splash" />
|
||||
|
||||
</resources>
|
@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<style name="Foundation.Compat">
|
||||
<item name="android:windowTranslucentNavigation">true</item>
|
||||
<item name="android:windowTranslucentStatus">true</item>
|
||||
</style>
|
||||
</resources>
|
38
app/src/main/res/values-v21/themes.xml
Normal file
38
app/src/main/res/values-v21/themes.xml
Normal file
@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="Base.V21.Theme.Foundation.Light" parent="Base.V17.Theme.Foundation.Light">
|
||||
<item name="android:statusBarColor">#38000000</item>
|
||||
<item name="android:navigationBarColor">#38000000</item>
|
||||
</style>
|
||||
|
||||
<style name="Base.V21.Theme.Foundation" parent="Base.V17.Theme.Foundation">
|
||||
<item name="android:statusBarColor">#60000000</item>
|
||||
<item name="android:navigationBarColor">#60000000</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Foundation.Light" parent="Base.V21.Theme.Foundation.Light" />
|
||||
|
||||
<style name="Theme.Foundation" parent="Base.V21.Theme.Foundation" />
|
||||
|
||||
<style name="Base.V21.Theme.Splash.Light" parent="Base.V19.Theme.Splash.Light">
|
||||
<item name="android:windowTranslucentStatus">false</item>
|
||||
<item name="android:windowTranslucentNavigation">false</item>
|
||||
<item name="android:statusBarColor">@android:color/transparent</item>
|
||||
<item name="android:navigationBarColor">@android:color/transparent</item>
|
||||
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
|
||||
</style>
|
||||
|
||||
<style name="Base.V21.Theme.Splash" parent="Base.V19.Theme.Splash">
|
||||
<item name="android:windowTranslucentStatus">false</item>
|
||||
<item name="android:windowTranslucentNavigation">false</item>
|
||||
<item name="android:statusBarColor">@android:color/transparent</item>
|
||||
<item name="android:navigationBarColor">@android:color/transparent</item>
|
||||
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Splash.Light" parent="Base.V21.Theme.Splash.Light" />
|
||||
|
||||
<style name="Theme.Splash" parent="Base.V21.Theme.Splash" />
|
||||
|
||||
</resources>
|
17
app/src/main/res/values-v23/themes.xml
Normal file
17
app/src/main/res/values-v23/themes.xml
Normal file
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="Base.V23.Theme.Foundation.Light" parent="Base.V21.Theme.Foundation.Light">
|
||||
<item name="android:statusBarColor">#40bdbdbd</item>
|
||||
<item name="android:windowLightStatusBar">true</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Foundation.Light" parent="Base.V23.Theme.Foundation.Light" />
|
||||
|
||||
<style name="Base.V23.Theme.Splash.Light" parent="Base.V21.Theme.Splash.Light">
|
||||
<item name="android:windowLightStatusBar">false</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Splash.Light" parent="Base.V23.Theme.Splash.Light" />
|
||||
|
||||
</resources>
|
24
app/src/main/res/values-v27/themes.xml
Normal file
24
app/src/main/res/values-v27/themes.xml
Normal file
@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="Base.V27.Theme.Foundation.Light" parent="Base.V23.Theme.Foundation.Light">
|
||||
<item name="android:navigationBarColor">#e0fafafa</item>
|
||||
<item name="android:navigationBarDividerColor">#1f000000</item>
|
||||
<item name="android:windowLightNavigationBar">true</item>
|
||||
</style>
|
||||
|
||||
<style name="Base.V27.Theme.Foundation" parent="Base.V21.Theme.Foundation">
|
||||
<item name="android:navigationBarDividerColor">@android:color/transparent</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Foundation.Light" parent="Base.V27.Theme.Foundation.Light" />
|
||||
|
||||
<style name="Theme.Foundation" parent="Base.V27.Theme.Foundation" />
|
||||
|
||||
<style name="Base.V27.Theme.Splash.Light" parent="Base.V23.Theme.Splash.Light">
|
||||
<item name="android:windowLightNavigationBar">false</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Splash.Light" parent="Base.V27.Theme.Splash.Light" />
|
||||
|
||||
</resources>
|
@ -1,20 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="SplashThemeBase" parent="android:Theme.DeviceDefault.NoActionBar">
|
||||
<item name="android:windowBackground">@drawable/ic_splash_activity</item>
|
||||
<item name="android:windowContentOverlay">@null</item>
|
||||
</style>
|
||||
<style name="SplashTheme" parent="Theme.Splash.Light" />
|
||||
|
||||
<style name="SplashTheme" parent="SplashThemeBase" />
|
||||
|
||||
<style name="Foundation" parent="Theme.MaterialComponents.DayNight.NoActionBar">
|
||||
<item name="android:windowBackground">?colorSurface</item>
|
||||
<item name="android:windowContentOverlay">@null</item>
|
||||
</style>
|
||||
|
||||
<!--This should be overridden in v21 for transparency, etc-->
|
||||
<style name="Foundation.Compat" />
|
||||
<style name="Foundation" parent="Theme.Foundation.Light" />
|
||||
|
||||
<!--region Do not remove-->
|
||||
<style name="Empty" />
|
||||
@ -28,7 +17,7 @@
|
||||
<item name="android:textStyle">bold</item>
|
||||
</style>
|
||||
|
||||
<style name="Foundation.Default" parent="Foundation.Compat">
|
||||
<style name="Foundation.Default">
|
||||
<item name="android:includeFontPadding">false</item>
|
||||
<item name="actionBarSize">@dimen/internal_action_bar_size</item>
|
||||
<item name="popupMenuStyle">@style/Foundation.PopupMenu</item>
|
||||
|
32
app/src/main/res/values/themes.xml
Normal file
32
app/src/main/res/values/themes.xml
Normal file
@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="Base.V17.Theme.Foundation.Light" parent="Theme.MaterialComponents.Light.NoActionBar">
|
||||
<item name="android:windowBackground">?colorSurface</item>
|
||||
<item name="android:windowContentOverlay">@null</item>
|
||||
</style>
|
||||
|
||||
<style name="Base.V17.Theme.Foundation" parent="Theme.MaterialComponents.NoActionBar">
|
||||
<item name="android:windowBackground">?colorSurface</item>
|
||||
<item name="android:windowContentOverlay">@null</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Foundation.Light" parent="Base.V17.Theme.Foundation.Light" />
|
||||
|
||||
<style name="Theme.Foundation" parent="Base.V17.Theme.Foundation" />
|
||||
|
||||
<style name="Base.V17.Theme.Splash.Light" parent="android:Theme.DeviceDefault.Light.NoActionBar">
|
||||
<item name="android:windowBackground">@drawable/ic_splash_activity</item>
|
||||
<item name="android:windowContentOverlay">@null</item>
|
||||
</style>
|
||||
|
||||
<style name="Base.V17.Theme.Splash" parent="android:Theme.DeviceDefault.NoActionBar">
|
||||
<item name="android:windowBackground">@drawable/ic_splash_activity</item>
|
||||
<item name="android:windowContentOverlay">@null</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Splash.Light" parent="Base.V17.Theme.Splash.Light" />
|
||||
|
||||
<style name="Theme.Splash" parent="Base.V17.Theme.Splash" />
|
||||
|
||||
</resources>
|
Loading…
x
Reference in New Issue
Block a user