feat: 优化

pull/219/head
kunfei 5 years ago
parent 7e111fc4aa
commit eb1eac8fcd
  1. 2
      app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt
  2. 57
      app/src/main/java/io/legado/app/ui/replacerule/edit/ReplaceEditDialog.kt

@ -584,7 +584,7 @@ class ReadBookActivity : VMBaseActivity<ReadBookViewModel>(R.layout.activity_boo
autoPageProgress++ autoPageProgress++
if (autoPageProgress >= 460) { if (autoPageProgress >= 460) {
autoPageProgress = 0 autoPageProgress = 0
ReadBook.moveToNextPage() page_view.fillPage(PageDelegate.Direction.NEXT)
} else { } else {
page_view.invalidate() page_view.invalidate()
} }

@ -1,26 +1,30 @@
package io.legado.app.ui.replacerule.edit package io.legado.app.ui.replacerule.edit
import android.graphics.Rect
import android.os.Bundle import android.os.Bundle
import android.util.DisplayMetrics import android.util.DisplayMetrics
import android.view.LayoutInflater import android.view.*
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import android.view.ViewGroup.LayoutParams.WRAP_CONTENT import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
import android.widget.PopupWindow
import androidx.appcompat.widget.Toolbar import androidx.appcompat.widget.Toolbar
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentManager
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
import io.legado.app.R import io.legado.app.R
import io.legado.app.constant.AppConst
import io.legado.app.constant.Theme import io.legado.app.constant.Theme
import io.legado.app.data.entities.ReplaceRule import io.legado.app.data.entities.ReplaceRule
import io.legado.app.ui.widget.KeyboardToolPop
import io.legado.app.utils.applyTint import io.legado.app.utils.applyTint
import io.legado.app.utils.getViewModel import io.legado.app.utils.getViewModel
import io.legado.app.utils.toast import io.legado.app.utils.toast
import kotlinx.android.synthetic.main.dialog_replace_edit.* import kotlinx.android.synthetic.main.dialog_replace_edit.*
import org.jetbrains.anko.displayMetrics
import kotlin.math.abs
class ReplaceEditDialog : DialogFragment(), class ReplaceEditDialog : DialogFragment(),
Toolbar.OnMenuItemClickListener { Toolbar.OnMenuItemClickListener,
KeyboardToolPop.CallBack {
companion object { companion object {
@ -41,6 +45,8 @@ class ReplaceEditDialog : DialogFragment(),
} }
private lateinit var viewModel: ReplaceEditViewModel private lateinit var viewModel: ReplaceEditViewModel
private var mSoftKeyboardTool: PopupWindow? = null
private var mIsSoftKeyBoardShowing = false
override fun onStart() { override fun onStart() {
super.onStart() super.onStart()
@ -60,6 +66,8 @@ class ReplaceEditDialog : DialogFragment(),
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
mSoftKeyboardTool = KeyboardToolPop(requireContext(), AppConst.keyboardToolChars, this)
view.viewTreeObserver.addOnGlobalLayoutListener(KeyboardOnGlobalChangeListener())
tool_bar.inflateMenu(R.menu.replace_edit) tool_bar.inflateMenu(R.menu.replace_edit)
tool_bar.menu.applyTint(requireContext(), Theme.getTheme()) tool_bar.menu.applyTint(requireContext(), Theme.getTheme())
tool_bar.setOnMenuItemClickListener(this) tool_bar.setOnMenuItemClickListener(this)
@ -111,6 +119,45 @@ class ReplaceEditDialog : DialogFragment(),
val callBack get() = activity as? CallBack val callBack get() = activity as? CallBack
override fun sendText(text: String) {
TODO("Not yet implemented")
}
private fun showKeyboardTopPopupWindow() {
mSoftKeyboardTool?.let {
if (it.isShowing) return
view?.let { view ->
it.showAtLocation(view, Gravity.BOTTOM, 0, 0)
}
}
}
private fun closePopupWindow() {
mSoftKeyboardTool?.dismiss()
}
private inner class KeyboardOnGlobalChangeListener : ViewTreeObserver.OnGlobalLayoutListener {
override fun onGlobalLayout() {
activity?.let {
val rect = Rect()
// 获取当前页面窗口的显示范围
dialog?.window?.decorView?.getWindowVisibleDisplayFrame(rect)
val screenHeight = it.displayMetrics.heightPixels
val keyboardHeight = screenHeight - rect.bottom // 输入法的高度
val preShowing = mIsSoftKeyBoardShowing
if (abs(keyboardHeight) > screenHeight / 5) {
mIsSoftKeyBoardShowing = true // 超过屏幕五分之一则表示弹出了输入法
showKeyboardTopPopupWindow()
} else {
mIsSoftKeyBoardShowing = false
if (preShowing) {
closePopupWindow()
}
}
}
}
}
interface CallBack { interface CallBack {
fun onReplaceRuleSave() fun onReplaceRuleSave()
} }

Loading…
Cancel
Save