|
@@ -4,15 +4,22 @@ import android.content.DialogInterface
|
|
|
import android.content.DialogInterface.OnDismissListener
|
|
import android.content.DialogInterface.OnDismissListener
|
|
|
import android.os.Build
|
|
import android.os.Build
|
|
|
import android.os.Bundle
|
|
import android.os.Bundle
|
|
|
|
|
+import android.view.Gravity
|
|
|
import android.view.View
|
|
import android.view.View
|
|
|
|
|
+import android.view.WindowManager
|
|
|
import androidx.annotation.LayoutRes
|
|
import androidx.annotation.LayoutRes
|
|
|
import androidx.fragment.app.DialogFragment
|
|
import androidx.fragment.app.DialogFragment
|
|
|
import androidx.fragment.app.FragmentManager
|
|
import androidx.fragment.app.FragmentManager
|
|
|
|
|
+import androidx.lifecycle.Lifecycle
|
|
|
|
|
+import androidx.lifecycle.LifecycleEventObserver
|
|
|
|
|
+import androidx.lifecycle.LifecycleOwner
|
|
|
import androidx.lifecycle.lifecycleScope
|
|
import androidx.lifecycle.lifecycleScope
|
|
|
import io.legado.app.R
|
|
import io.legado.app.R
|
|
|
import io.legado.app.constant.AppLog
|
|
import io.legado.app.constant.AppLog
|
|
|
|
|
+import io.legado.app.help.config.AppConfig
|
|
|
import io.legado.app.help.coroutine.Coroutine
|
|
import io.legado.app.help.coroutine.Coroutine
|
|
|
import io.legado.app.lib.theme.ThemeStore
|
|
import io.legado.app.lib.theme.ThemeStore
|
|
|
|
|
+import io.legado.app.utils.dpToPx
|
|
|
import kotlinx.coroutines.CoroutineScope
|
|
import kotlinx.coroutines.CoroutineScope
|
|
|
import kotlinx.coroutines.Dispatchers
|
|
import kotlinx.coroutines.Dispatchers
|
|
|
import kotlin.coroutines.CoroutineContext
|
|
import kotlin.coroutines.CoroutineContext
|
|
@@ -34,6 +41,35 @@ abstract class BaseDialogFragment(
|
|
|
if (adaptationSoftKeyboard) {
|
|
if (adaptationSoftKeyboard) {
|
|
|
dialog?.window?.setBackgroundDrawableResource(R.color.transparent)
|
|
dialog?.window?.setBackgroundDrawableResource(R.color.transparent)
|
|
|
}
|
|
}
|
|
|
|
|
+ if (AppConfig.isEInkMode) {
|
|
|
|
|
+ dialog?.window?.let {
|
|
|
|
|
+ it.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
|
|
|
|
|
+ val attr = it.attributes
|
|
|
|
|
+ attr.dimAmount = 0.0f
|
|
|
|
|
+ attr.windowAnimations = 0
|
|
|
|
|
+ it.attributes = attr
|
|
|
|
|
+ it.setBackgroundDrawableResource(R.color.transparent)
|
|
|
|
|
+ }
|
|
|
|
|
+ // 修改gravity的时机一般在子类的onStart方法中, 因此需要在onStart之后执行.
|
|
|
|
|
+ this.lifecycle.addObserver(object : LifecycleEventObserver {
|
|
|
|
|
+ override fun onStateChanged(
|
|
|
|
|
+ source: LifecycleOwner,
|
|
|
|
|
+ event: Lifecycle.Event
|
|
|
|
|
+ ) {
|
|
|
|
|
+ if (event == Lifecycle.Event.ON_START) {
|
|
|
|
|
+ when (dialog?.window?.attributes?.gravity) {
|
|
|
|
|
+ Gravity.TOP -> view?.setBackgroundResource(R.drawable.bg_eink_border_bottom)
|
|
|
|
|
+ Gravity.BOTTOM -> view?.setBackgroundResource(R.drawable.bg_eink_border_top)
|
|
|
|
|
+ else -> {
|
|
|
|
|
+ val padding = 2.dpToPx();
|
|
|
|
|
+ view?.setPadding(padding, padding, padding, padding)
|
|
|
|
|
+ view?.setBackgroundResource(R.drawable.bg_eink_border_dialog)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
@@ -49,7 +85,7 @@ abstract class BaseDialogFragment(
|
|
|
if (adaptationSoftKeyboard) {
|
|
if (adaptationSoftKeyboard) {
|
|
|
view.findViewById<View>(R.id.vw_bg)?.setOnClickListener(null)
|
|
view.findViewById<View>(R.id.vw_bg)?.setOnClickListener(null)
|
|
|
view.setOnClickListener { dismiss() }
|
|
view.setOnClickListener { dismiss() }
|
|
|
- } else {
|
|
|
|
|
|
|
+ } else if (!AppConfig.isEInkMode) {
|
|
|
view.setBackgroundColor(ThemeStore.backgroundColor())
|
|
view.setBackgroundColor(ThemeStore.backgroundColor())
|
|
|
}
|
|
}
|
|
|
onFragmentCreated(view, savedInstanceState)
|
|
onFragmentCreated(view, savedInstanceState)
|