More fixes/improvements to split screen

Fixed notches being used as an inset while in split screen. Also treating split screen as if it was not in fullscreen mode
This commit is contained in:
Jays2Kings 2021-11-02 01:00:44 -04:00
parent 7a5c0517d9
commit c5a6d76650
3 changed files with 18 additions and 22 deletions

View file

@ -189,6 +189,9 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
private var lastCropRes = 0
val isSplitScreen: Boolean
get() = Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && isInMultiWindowMode
companion object {
const val SHIFT_DOUBLE_PAGES = "shiftingDoublePages"
@ -766,28 +769,16 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
insets.getInsets(systemBars())
}
val vis = insets.isVisible(statusBars())
val isSplitScreen = Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && isInMultiWindowMode
binding.viewerContainer.updateLayoutParams<ViewGroup.MarginLayoutParams> {
if (isSplitScreen) {
topMargin = systemInsets.top
bottomMargin = systemInsets.bottom
} else {
topMargin = 0
bottomMargin = 0
}
}
binding.pageNumber.updateLayoutParams<ViewGroup.MarginLayoutParams> {
bottomMargin = if (isSplitScreen) systemInsets.bottom else 0
}
val fullscreen = preferences.fullscreen().get() && !isSplitScreen
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
if (!firstPass && lastVis != vis && preferences.fullscreen().get()) {
if (!firstPass && lastVis != vis && fullscreen) {
onVisibilityChange(vis)
}
firstPass = false
lastVis = vis
}
wic.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_SWIPE
if (!preferences.fullscreen().get() && sheetManageNavColor) {
if (!fullscreen && sheetManageNavColor) {
window.navigationBarColor = getResourceColor(R.attr.colorSurface)
}
binding.appBar.updateLayoutParams<ViewGroup.MarginLayoutParams> {
@ -806,9 +797,8 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
leftMargin = 12.dpToPx + systemInsets.left
rightMargin = 12.dpToPx + systemInsets.right
}
val fullscreen = preferences.fullscreen().get()
binding.chaptersSheet.root.sheetBehavior?.peekHeight =
peek + if (fullscreen || isSplitScreen) {
peek + if (fullscreen) {
insets.getBottomGestureInsets()
} else {
val rootInsets = binding.root.rootWindowInsetsCompat ?: insets
@ -833,7 +823,7 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
fun setNavColor(insets: WindowInsetsCompat) {
sheetManageNavColor = when {
(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && isInMultiWindowMode) -> {
isSplitScreen -> {
window.statusBarColor = getResourceColor(R.attr.colorPrimaryVariant)
window.navigationBarColor = getResourceColor(R.attr.colorPrimaryVariant)
false
@ -1647,7 +1637,7 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
* Sets the fullscreen reading mode (immersive) according to [enabled].
*/
private fun setFullscreen(enabled: Boolean) {
WindowCompat.setDecorFitsSystemWindows(window, !enabled)
WindowCompat.setDecorFitsSystemWindows(window, !enabled || isSplitScreen)
wic.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_SWIPE
binding.root.rootWindowInsetsCompat?.let { setNavColor(it) }
}

View file

@ -44,6 +44,9 @@ class PagerConfig(
var cutoutBehavior = 0
private set
var isFullscreen = true
private set
var shiftDoublePage = false
var doublePages = preferences.pageLayout().get() == PageLayout.DOUBLE_PAGES.value
@ -62,8 +65,9 @@ class PagerConfig(
var autoSplitPages = preferences.automaticSplitsPage().get()
init {
preferences.pageTransitions()
.register({ usePageTransitions = it })
preferences.pageTransitions().register({ usePageTransitions = it })
preferences.fullscreen().register({ isFullscreen = it })
preferences.imageScaleType()
.register({ imageScaleType = it }, { imagePropertyChangedListener?.invoke() })

View file

@ -504,7 +504,9 @@ class PagerPageHolder(
val bottomInsets = viewer.activity.window.decorView.rootWindowInsets.bottomCutoutInset().toFloat()
setExtendPastCutout(config.cutoutBehavior == CUTOUT_START_EXTENDED && config.scaleTypeIsFullFit() && topInsets + bottomInsets > 0)
if ((config.cutoutBehavior != CUTOUT_IGNORE || !config.scaleTypeIsFullFit()) &&
android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q
android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q &&
config.isFullscreen &&
!viewer.activity.isInMultiWindowMode
) {
val insets: WindowInsets? = viewer.activity.window.decorView.rootWindowInsets
setExtraSpace(