mirror of
https://github.com/gedoor/legado.git
synced 2025-08-10 00:52:30 +00:00
优化
This commit is contained in:
@@ -6,6 +6,8 @@ import android.os.Bundle
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import androidx.activity.viewModels
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.VMBaseActivity
|
||||
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.viewbindingdelegate.viewBinding
|
||||
import splitties.init.appCtx
|
||||
import splitties.views.bottomPadding
|
||||
import java.io.FileOutputStream
|
||||
|
||||
class BookInfoEditActivity :
|
||||
@@ -51,6 +54,7 @@ class BookInfoEditActivity :
|
||||
viewModel.loadBook(it)
|
||||
}
|
||||
}
|
||||
initView()
|
||||
initEvent()
|
||||
}
|
||||
|
||||
@@ -66,6 +70,15 @@ class BookInfoEditActivity :
|
||||
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 {
|
||||
tvChangeCover.setOnClickListener {
|
||||
viewModel.bookData.value?.let {
|
||||
|
||||
@@ -7,6 +7,8 @@ import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import android.widget.EditText
|
||||
import androidx.activity.viewModels
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
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.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import splitties.views.bottomPadding
|
||||
|
||||
class BookSourceEditActivity :
|
||||
VMBaseActivity<ActivityBookSourceEditBinding, BookSourceEditViewModel>(),
|
||||
@@ -197,6 +200,13 @@ class BookSourceEditActivity :
|
||||
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() {
|
||||
|
||||
@@ -7,6 +7,8 @@ import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import android.widget.EditText
|
||||
import androidx.activity.viewModels
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import io.legado.app.R
|
||||
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.showHelp
|
||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
import splitties.views.bottomPadding
|
||||
|
||||
/**
|
||||
* 编辑替换规则
|
||||
@@ -54,12 +57,10 @@ class ReplaceEditActivity :
|
||||
|
||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||
softKeyboardTool.attachToWindow(window)
|
||||
initView()
|
||||
viewModel.initData(intent) {
|
||||
upReplaceView(it)
|
||||
}
|
||||
binding.ivHelp.setOnClickListener {
|
||||
showHelp("regexHelp")
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCompatCreateOptionsMenu(menu: Menu): Boolean {
|
||||
@@ -73,6 +74,7 @@ class ReplaceEditActivity :
|
||||
setResult(RESULT_OK)
|
||||
finish()
|
||||
}
|
||||
|
||||
R.id.menu_copy_rule -> sendToClip(GSON.toJson(getReplaceRule()))
|
||||
R.id.menu_paste_rule -> viewModel.pasteRule {
|
||||
upReplaceView(it)
|
||||
@@ -86,6 +88,19 @@ class ReplaceEditActivity :
|
||||
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 {
|
||||
etName.setText(replaceRule.name)
|
||||
etGroup.setText(replaceRule.group)
|
||||
|
||||
@@ -21,6 +21,8 @@ import android.webkit.WebView
|
||||
import android.webkit.WebViewClient
|
||||
import androidx.activity.addCallback
|
||||
import androidx.activity.viewModels
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.core.view.size
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.script.rhino.RhinoScriptEngine
|
||||
@@ -60,6 +62,7 @@ import io.legado.app.utils.visible
|
||||
import kotlinx.coroutines.launch
|
||||
import org.apache.commons.text.StringEscapeUtils
|
||||
import org.jsoup.Jsoup
|
||||
import splitties.views.bottomPadding
|
||||
import java.io.ByteArrayInputStream
|
||||
import java.net.URLDecoder
|
||||
import java.util.regex.PatternSyntaxException
|
||||
@@ -91,6 +94,7 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
|
||||
viewModel.upStarMenuData.observe(this) { upStarMenu() }
|
||||
viewModel.upTtsMenuData.observe(this) { upTtsMenu(it) }
|
||||
binding.titleBar.title = intent.getStringExtra("title")
|
||||
initView()
|
||||
initWebView()
|
||||
initLiveData()
|
||||
viewModel.initData(intent)
|
||||
@@ -175,6 +179,15 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
|
||||
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")
|
||||
private fun initWebView() {
|
||||
binding.progressBar.fontColor = accentColor
|
||||
|
||||
@@ -6,6 +6,8 @@ import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import android.widget.EditText
|
||||
import androidx.activity.viewModels
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.google.android.material.tabs.TabLayout
|
||||
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.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import splitties.views.bottomPadding
|
||||
|
||||
class RssSourceEditActivity :
|
||||
VMBaseActivity<ActivityRssSourceEditBinding, RssSourceEditViewModel>(),
|
||||
@@ -185,6 +188,13 @@ class RssSourceEditActivity :
|
||||
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?) {
|
||||
|
||||
@@ -47,6 +47,7 @@ class KeyboardToolPop(
|
||||
private val binding = PopupKeyboardToolBinding.inflate(LayoutInflater.from(context))
|
||||
private val adapter = Adapter(context)
|
||||
private var mIsSoftKeyBoardShowing = false
|
||||
var initialPadding = 0
|
||||
|
||||
init {
|
||||
contentView = binding.root
|
||||
@@ -76,13 +77,13 @@ class KeyboardToolPop(
|
||||
val preShowing = mIsSoftKeyBoardShowing
|
||||
if (abs(keyboardHeight) > screenHeight / 5) {
|
||||
mIsSoftKeyBoardShowing = true // 超过屏幕五分之一则表示弹出了输入法
|
||||
rootView.setPadding(0, 0, 0, contentView.measuredHeight)
|
||||
rootView.setPadding(0, 0, 0, initialPadding + contentView.measuredHeight)
|
||||
if (!isShowing) {
|
||||
showAtLocation(rootView, Gravity.BOTTOM, 0, 0)
|
||||
}
|
||||
} else {
|
||||
mIsSoftKeyBoardShowing = false
|
||||
rootView.setPadding(0, 0, 0, 0)
|
||||
//rootView.setPadding(0, 0, 0, 0)
|
||||
if (preShowing) {
|
||||
dismiss()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user