This commit is contained in:
Horis
2024-09-02 19:35:22 +08:00
parent fad5158bef
commit 6c331b84d9
6 changed files with 67 additions and 5 deletions
@@ -6,6 +6,8 @@ import android.os.Bundle
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import io.legado.app.R import io.legado.app.R
import io.legado.app.base.VMBaseActivity import io.legado.app.base.VMBaseActivity
import io.legado.app.constant.BookType import io.legado.app.constant.BookType
@@ -29,6 +31,7 @@ import io.legado.app.utils.showDialogFragment
import io.legado.app.utils.toastOnUi import io.legado.app.utils.toastOnUi
import io.legado.app.utils.viewbindingdelegate.viewBinding import io.legado.app.utils.viewbindingdelegate.viewBinding
import splitties.init.appCtx import splitties.init.appCtx
import splitties.views.bottomPadding
import java.io.FileOutputStream import java.io.FileOutputStream
class BookInfoEditActivity : class BookInfoEditActivity :
@@ -51,6 +54,7 @@ class BookInfoEditActivity :
viewModel.loadBook(it) viewModel.loadBook(it)
} }
} }
initView()
initEvent() initEvent()
} }
@@ -66,6 +70,15 @@ class BookInfoEditActivity :
return super.onCompatOptionsItemSelected(item) return super.onCompatOptionsItemSelected(item)
} }
private fun initView() {
ViewCompat.setOnApplyWindowInsetsListener(binding.root) { _, windowInsets ->
val typeMask = WindowInsetsCompat.Type.navigationBars() or WindowInsetsCompat.Type.ime()
val insets = windowInsets.getInsets(typeMask)
binding.root.bottomPadding = insets.bottom
windowInsets
}
}
private fun initEvent() = binding.run { private fun initEvent() = binding.run {
tvChangeCover.setOnClickListener { tvChangeCover.setOnClickListener {
viewModel.bookData.value?.let { viewModel.bookData.value?.let {
@@ -7,6 +7,8 @@ import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import android.widget.EditText import android.widget.EditText
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayout
@@ -53,6 +55,7 @@ import io.legado.app.utils.viewbindingdelegate.viewBinding
import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import splitties.views.bottomPadding
class BookSourceEditActivity : class BookSourceEditActivity :
VMBaseActivity<ActivityBookSourceEditBinding, BookSourceEditViewModel>(), VMBaseActivity<ActivityBookSourceEditBinding, BookSourceEditViewModel>(),
@@ -197,6 +200,13 @@ class BookSourceEditActivity :
setEditEntities(tab?.position) setEditEntities(tab?.position)
} }
}) })
ViewCompat.setOnApplyWindowInsetsListener(binding.root) { _, windowInsets ->
val typeMask = WindowInsetsCompat.Type.navigationBars() or WindowInsetsCompat.Type.ime()
val insets = windowInsets.getInsets(typeMask)
binding.root.bottomPadding = insets.bottom
softKeyboardTool.initialPadding = insets.bottom
windowInsets
}
} }
override fun finish() { override fun finish() {
@@ -7,6 +7,8 @@ import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import android.widget.EditText import android.widget.EditText
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import io.legado.app.R import io.legado.app.R
import io.legado.app.base.VMBaseActivity import io.legado.app.base.VMBaseActivity
@@ -18,6 +20,7 @@ import io.legado.app.utils.GSON
import io.legado.app.utils.sendToClip import io.legado.app.utils.sendToClip
import io.legado.app.utils.showHelp import io.legado.app.utils.showHelp
import io.legado.app.utils.viewbindingdelegate.viewBinding import io.legado.app.utils.viewbindingdelegate.viewBinding
import splitties.views.bottomPadding
/** /**
* 编辑替换规则 * 编辑替换规则
@@ -54,12 +57,10 @@ class ReplaceEditActivity :
override fun onActivityCreated(savedInstanceState: Bundle?) { override fun onActivityCreated(savedInstanceState: Bundle?) {
softKeyboardTool.attachToWindow(window) softKeyboardTool.attachToWindow(window)
initView()
viewModel.initData(intent) { viewModel.initData(intent) {
upReplaceView(it) upReplaceView(it)
} }
binding.ivHelp.setOnClickListener {
showHelp("regexHelp")
}
} }
override fun onCompatCreateOptionsMenu(menu: Menu): Boolean { override fun onCompatCreateOptionsMenu(menu: Menu): Boolean {
@@ -73,6 +74,7 @@ class ReplaceEditActivity :
setResult(RESULT_OK) setResult(RESULT_OK)
finish() finish()
} }
R.id.menu_copy_rule -> sendToClip(GSON.toJson(getReplaceRule())) R.id.menu_copy_rule -> sendToClip(GSON.toJson(getReplaceRule()))
R.id.menu_paste_rule -> viewModel.pasteRule { R.id.menu_paste_rule -> viewModel.pasteRule {
upReplaceView(it) upReplaceView(it)
@@ -86,6 +88,19 @@ class ReplaceEditActivity :
softKeyboardTool.dismiss() softKeyboardTool.dismiss()
} }
private fun initView() {
binding.ivHelp.setOnClickListener {
showHelp("regexHelp")
}
ViewCompat.setOnApplyWindowInsetsListener(binding.root) { _, windowInsets ->
val typeMask = WindowInsetsCompat.Type.navigationBars() or WindowInsetsCompat.Type.ime()
val insets = windowInsets.getInsets(typeMask)
binding.root.bottomPadding = insets.bottom
softKeyboardTool.initialPadding = insets.bottom
windowInsets
}
}
private fun upReplaceView(replaceRule: ReplaceRule) = binding.run { private fun upReplaceView(replaceRule: ReplaceRule) = binding.run {
etName.setText(replaceRule.name) etName.setText(replaceRule.name)
etGroup.setText(replaceRule.group) etGroup.setText(replaceRule.group)
@@ -21,6 +21,8 @@ import android.webkit.WebView
import android.webkit.WebViewClient import android.webkit.WebViewClient
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.size import androidx.core.view.size
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.script.rhino.RhinoScriptEngine import com.script.rhino.RhinoScriptEngine
@@ -60,6 +62,7 @@ import io.legado.app.utils.visible
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import org.apache.commons.text.StringEscapeUtils import org.apache.commons.text.StringEscapeUtils
import org.jsoup.Jsoup import org.jsoup.Jsoup
import splitties.views.bottomPadding
import java.io.ByteArrayInputStream import java.io.ByteArrayInputStream
import java.net.URLDecoder import java.net.URLDecoder
import java.util.regex.PatternSyntaxException import java.util.regex.PatternSyntaxException
@@ -91,6 +94,7 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
viewModel.upStarMenuData.observe(this) { upStarMenu() } viewModel.upStarMenuData.observe(this) { upStarMenu() }
viewModel.upTtsMenuData.observe(this) { upTtsMenu(it) } viewModel.upTtsMenuData.observe(this) { upTtsMenu(it) }
binding.titleBar.title = intent.getStringExtra("title") binding.titleBar.title = intent.getStringExtra("title")
initView()
initWebView() initWebView()
initLiveData() initLiveData()
viewModel.initData(intent) viewModel.initData(intent)
@@ -175,6 +179,15 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
return AppConfig.isNightTheme return AppConfig.isNightTheme
} }
private fun initView() {
ViewCompat.setOnApplyWindowInsetsListener(binding.root) { _, windowInsets ->
val typeMask = WindowInsetsCompat.Type.navigationBars() or WindowInsetsCompat.Type.ime()
val insets = windowInsets.getInsets(typeMask)
binding.root.bottomPadding = insets.bottom
windowInsets
}
}
@SuppressLint("SetJavaScriptEnabled") @SuppressLint("SetJavaScriptEnabled")
private fun initWebView() { private fun initWebView() {
binding.progressBar.fontColor = accentColor binding.progressBar.fontColor = accentColor
@@ -6,6 +6,8 @@ import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import android.widget.EditText import android.widget.EditText
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayout
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel
@@ -42,6 +44,7 @@ import io.legado.app.utils.viewbindingdelegate.viewBinding
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import splitties.views.bottomPadding
class RssSourceEditActivity : class RssSourceEditActivity :
VMBaseActivity<ActivityRssSourceEditBinding, RssSourceEditViewModel>(), VMBaseActivity<ActivityRssSourceEditBinding, RssSourceEditViewModel>(),
@@ -185,6 +188,13 @@ class RssSourceEditActivity :
setEditEntities(tab?.position) setEditEntities(tab?.position)
} }
}) })
ViewCompat.setOnApplyWindowInsetsListener(binding.root) { _, windowInsets ->
val typeMask = WindowInsetsCompat.Type.navigationBars() or WindowInsetsCompat.Type.ime()
val insets = windowInsets.getInsets(typeMask)
binding.root.bottomPadding = insets.bottom
softKeyboardTool.initialPadding = insets.bottom
windowInsets
}
} }
private fun setEditEntities(tabPosition: Int?) { private fun setEditEntities(tabPosition: Int?) {
@@ -47,6 +47,7 @@ class KeyboardToolPop(
private val binding = PopupKeyboardToolBinding.inflate(LayoutInflater.from(context)) private val binding = PopupKeyboardToolBinding.inflate(LayoutInflater.from(context))
private val adapter = Adapter(context) private val adapter = Adapter(context)
private var mIsSoftKeyBoardShowing = false private var mIsSoftKeyBoardShowing = false
var initialPadding = 0
init { init {
contentView = binding.root contentView = binding.root
@@ -76,13 +77,13 @@ class KeyboardToolPop(
val preShowing = mIsSoftKeyBoardShowing val preShowing = mIsSoftKeyBoardShowing
if (abs(keyboardHeight) > screenHeight / 5) { if (abs(keyboardHeight) > screenHeight / 5) {
mIsSoftKeyBoardShowing = true // 超过屏幕五分之一则表示弹出了输入法 mIsSoftKeyBoardShowing = true // 超过屏幕五分之一则表示弹出了输入法
rootView.setPadding(0, 0, 0, contentView.measuredHeight) rootView.setPadding(0, 0, 0, initialPadding + contentView.measuredHeight)
if (!isShowing) { if (!isShowing) {
showAtLocation(rootView, Gravity.BOTTOM, 0, 0) showAtLocation(rootView, Gravity.BOTTOM, 0, 0)
} }
} else { } else {
mIsSoftKeyBoardShowing = false mIsSoftKeyBoardShowing = false
rootView.setPadding(0, 0, 0, 0) //rootView.setPadding(0, 0, 0, 0)
if (preShowing) { if (preShowing) {
dismiss() dismiss()
} }