mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
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:
parent
7a5c0517d9
commit
c5a6d76650
3 changed files with 18 additions and 22 deletions
|
@ -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) }
|
||||
}
|
||||
|
|
|
@ -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() })
|
||||
|
|
|
@ -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(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue