Fix usability issues on screenshots screen

This commit is contained in:
kitsunyan
2020-07-29 14:59:55 +03:00
parent 640a13e7fb
commit b8fb749589
@@ -7,6 +7,7 @@ import android.graphics.drawable.Drawable
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.view.WindowManager
import android.widget.ImageView import android.widget.ImageView
import androidx.core.graphics.ColorUtils import androidx.core.graphics.ColorUtils
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
@@ -25,6 +26,7 @@ import nya.kitsunyan.foxydroid.entity.Repository
import nya.kitsunyan.foxydroid.graphics.PaddingDrawable import nya.kitsunyan.foxydroid.graphics.PaddingDrawable
import nya.kitsunyan.foxydroid.network.PicassoDownloader import nya.kitsunyan.foxydroid.network.PicassoDownloader
import nya.kitsunyan.foxydroid.utility.RxUtils import nya.kitsunyan.foxydroid.utility.RxUtils
import nya.kitsunyan.foxydroid.utility.extension.android.*
import nya.kitsunyan.foxydroid.utility.extension.resources.* import nya.kitsunyan.foxydroid.utility.extension.resources.*
import nya.kitsunyan.foxydroid.widget.StableRecyclerAdapter import nya.kitsunyan.foxydroid.widget.StableRecyclerAdapter
@@ -79,6 +81,9 @@ class ScreenshotsFragment(): DialogFragment() {
typedArray.recycle() typedArray.recycle()
} }
} }
if (Android.sdk(28)) {
layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
}
} }
val hideFlags = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or val hideFlags = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or
@@ -86,8 +91,7 @@ class ScreenshotsFragment(): DialogFragment() {
decorView.systemUiVisibility = decorView.systemUiVisibility or View.SYSTEM_UI_FLAG_LAYOUT_STABLE or decorView.systemUiVisibility = decorView.systemUiVisibility or View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
val applyHide = Runnable { decorView.systemUiVisibility = decorView.systemUiVisibility or hideFlags } val applyHide = Runnable { decorView.systemUiVisibility = decorView.systemUiVisibility or hideFlags }
decorView.postDelayed(applyHide, 2000L) val handleClick = {
decorView.setOnClickListener {
decorView.removeCallbacks(applyHide) decorView.removeCallbacks(applyHide)
if ((decorView.systemUiVisibility and hideFlags) == hideFlags) { if ((decorView.systemUiVisibility and hideFlags) == hideFlags) {
decorView.systemUiVisibility = decorView.systemUiVisibility and hideFlags.inv() decorView.systemUiVisibility = decorView.systemUiVisibility and hideFlags.inv()
@@ -95,9 +99,11 @@ class ScreenshotsFragment(): DialogFragment() {
decorView.systemUiVisibility = decorView.systemUiVisibility or hideFlags decorView.systemUiVisibility = decorView.systemUiVisibility or hideFlags
} }
} }
decorView.postDelayed(applyHide, 2000L)
decorView.setOnClickListener { handleClick() }
val viewPager = ViewPager2(dialog.context) val viewPager = ViewPager2(dialog.context)
viewPager.adapter = Adapter(packageName) { decorView.performClick() } viewPager.adapter = Adapter(packageName) { handleClick() }
viewPager.setPageTransformer(MarginPageTransformer(resources.sizeScaled(16))) viewPager.setPageTransformer(MarginPageTransformer(resources.sizeScaled(16)))
viewPager.viewTreeObserver.addOnGlobalLayoutListener { viewPager.viewTreeObserver.addOnGlobalLayoutListener {
(viewPager.adapter as Adapter).size = Pair(viewPager.width, viewPager.height) (viewPager.adapter as Adapter).size = Pair(viewPager.width, viewPager.height)