Merge pull request #902

* 点击区域设置压缩问题
This commit is contained in:
5151561
2026-04-18 02:24:03 +08:00
committed by GitHub
parent 49614f5ec6
commit 347995a676
4 changed files with 161 additions and 6 deletions
@@ -0,0 +1,62 @@
package io.legado.app.base
import android.app.Dialog
import android.content.DialogInterface
import android.os.Bundle
import android.view.View
import androidx.annotation.LayoutRes
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.FragmentManager
import androidx.lifecycle.lifecycleScope
import io.legado.app.constant.AppLog
import io.legado.app.help.coroutine.Coroutine
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlin.coroutines.CoroutineContext
abstract class BaseOverlayDialogFragment(
@LayoutRes layoutID: Int
) : DialogFragment(layoutID) {
private var onDismissListener: DialogInterface.OnDismissListener? = null
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
return Dialog(requireContext(), theme)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
onFragmentCreated(view, savedInstanceState)
observeLiveBus()
}
abstract fun onFragmentCreated(view: View, savedInstanceState: Bundle?)
open fun observeLiveBus() {
}
fun setOnDismissListener(onDismissListener: DialogInterface.OnDismissListener?) {
this.onDismissListener = onDismissListener
}
override fun onDismiss(dialog: DialogInterface) {
super.onDismiss(dialog)
onDismissListener?.onDismiss(dialog)
}
override fun show(manager: FragmentManager, tag: String?) {
if (isAdded) return
kotlin.runCatching {
manager.beginTransaction().remove(this).commitAllowingStateLoss()
super.show(manager, tag)
}.onFailure {
AppLog.put("显示对话框失败 tag:$tag", it)
}
}
fun <T> execute(
scope: CoroutineScope = lifecycleScope,
context: CoroutineContext = Dispatchers.IO,
block: suspend CoroutineScope.() -> T
) = Coroutine.async(scope, context) { block() }
}
@@ -6,7 +6,7 @@ import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import io.legado.app.R
import io.legado.app.base.BaseDialogFragment
import io.legado.app.base.BaseOverlayDialogFragment
import io.legado.app.constant.PreferKey
import io.legado.app.databinding.DialogClickActionConfigBinding
import io.legado.app.help.config.AppConfig
@@ -15,7 +15,7 @@ import io.legado.app.utils.getCompatColor
import io.legado.app.utils.putPrefInt
import io.legado.app.utils.viewbindingdelegate.viewBinding
class MangaClickActionConfigDialog : BaseDialogFragment(R.layout.dialog_click_action_config) {
class MangaClickActionConfigDialog : BaseOverlayDialogFragment(R.layout.dialog_click_action_config) {
private val binding by viewBinding(DialogClickActionConfigBinding::bind)
private val actions by lazy {
@@ -142,4 +142,3 @@ class MangaClickActionConfigDialog : BaseDialogFragment(R.layout.dialog_click_ac
AppConfig.detectMangaClickArea()
}
}
@@ -6,7 +6,7 @@ import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import io.legado.app.R
import io.legado.app.base.BaseDialogFragment
import io.legado.app.base.BaseOverlayDialogFragment
import io.legado.app.constant.PreferKey
import io.legado.app.databinding.DialogClickActionConfigBinding
import io.legado.app.help.config.AppConfig
@@ -19,7 +19,7 @@ import io.legado.app.utils.viewbindingdelegate.viewBinding
/**
* 点击区域设置
*/
class ClickActionConfigDialog : BaseDialogFragment(R.layout.dialog_click_action_config) {
class ClickActionConfigDialog : BaseOverlayDialogFragment(R.layout.dialog_click_action_config) {
private val binding by viewBinding(DialogClickActionConfigBinding::bind)
private val actions by lazy {
linkedMapOf(
@@ -147,4 +147,4 @@ class ClickActionConfigDialog : BaseDialogFragment(R.layout.dialog_click_action_
AppConfig.detectClickArea()
}
}
}