pull/517/head
gedoor 5 years ago
parent efb880484b
commit 3a55d1af75
  1. 11
      app/src/main/java/io/legado/app/ui/audio/AudioPlayActivity.kt
  2. 106
      app/src/main/java/io/legado/app/ui/book/read/ReadMenu.kt
  3. 5
      app/src/main/java/io/legado/app/ui/book/read/config/AutoReadDialog.kt
  4. 19
      app/src/main/java/io/legado/app/ui/book/read/config/ReadAloudDialog.kt
  5. 40
      app/src/main/java/io/legado/app/ui/main/MainActivity.kt
  6. 9
      app/src/main/java/io/legado/app/ui/widget/DetailSeekBar.kt
  7. 19
      app/src/main/java/io/legado/app/ui/widget/seekbar/SeekBarChangeListener.kt

@ -25,6 +25,7 @@ import io.legado.app.service.help.AudioPlay
import io.legado.app.ui.book.changesource.ChangeSourceDialog import io.legado.app.ui.book.changesource.ChangeSourceDialog
import io.legado.app.ui.book.toc.ChapterListActivity import io.legado.app.ui.book.toc.ChapterListActivity
import io.legado.app.ui.widget.image.CoverImageView import io.legado.app.ui.widget.image.CoverImageView
import io.legado.app.ui.widget.seekbar.SeekBarChangeListener
import io.legado.app.utils.* import io.legado.app.utils.*
import org.apache.commons.lang3.time.DateFormatUtils import org.apache.commons.lang3.time.DateFormatUtils
import org.jetbrains.anko.sdk27.listeners.onClick import org.jetbrains.anko.sdk27.listeners.onClick
@ -82,18 +83,18 @@ class AudioPlayActivity :
binding.ivSkipPrevious.onClick { binding.ivSkipPrevious.onClick {
AudioPlay.prev(this) AudioPlay.prev(this)
} }
binding.playerProgress.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener { binding.playerProgress.setOnSeekBarChangeListener(object : SeekBarChangeListener {
override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) { override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
binding.tvDurTime.text = DateFormatUtils.format(progress.toLong(), "mm:ss") binding.tvDurTime.text = DateFormatUtils.format(progress.toLong(), "mm:ss")
} }
override fun onStartTrackingTouch(seekBar: SeekBar?) { override fun onStartTrackingTouch(seekBar: SeekBar) {
adjustProgress = true adjustProgress = true
} }
override fun onStopTrackingTouch(seekBar: SeekBar?) { override fun onStopTrackingTouch(seekBar: SeekBar) {
adjustProgress = false adjustProgress = false
AudioPlay.adjustProgress(this@AudioPlayActivity, binding.playerProgress.progress) AudioPlay.adjustProgress(this@AudioPlayActivity, seekBar.progress)
} }
}) })
binding.ivChapter.onClick { binding.ivChapter.onClick {

@ -18,6 +18,7 @@ import io.legado.app.help.AppConfig
import io.legado.app.help.LocalConfig import io.legado.app.help.LocalConfig
import io.legado.app.lib.theme.* import io.legado.app.lib.theme.*
import io.legado.app.service.help.ReadBook import io.legado.app.service.help.ReadBook
import io.legado.app.ui.widget.seekbar.SeekBarChangeListener
import io.legado.app.utils.* import io.legado.app.utils.*
import org.jetbrains.anko.sdk27.listeners.onClick import org.jetbrains.anko.sdk27.listeners.onClick
import org.jetbrains.anko.sdk27.listeners.onLongClick import org.jetbrains.anko.sdk27.listeners.onLongClick
@ -46,40 +47,44 @@ class ReadMenu @JvmOverloads constructor(
val showBrightnessView get() = context.getPrefBoolean(PreferKey.showBrightnessView, true) val showBrightnessView get() = context.getPrefBoolean(PreferKey.showBrightnessView, true)
init { init {
initView()
upBrightnessState()
bindEvent()
}
private fun initView() = with(binding) {
if (AppConfig.isNightTheme) { if (AppConfig.isNightTheme) {
binding.fabNightTheme.setImageResource(R.drawable.ic_daytime) fabNightTheme.setImageResource(R.drawable.ic_daytime)
} else { } else {
binding.fabNightTheme.setImageResource(R.drawable.ic_brightness) fabNightTheme.setImageResource(R.drawable.ic_brightness)
} }
initAnimation() initAnimation()
val brightnessBackground = GradientDrawable() val brightnessBackground = GradientDrawable()
brightnessBackground.cornerRadius = 5F.dp brightnessBackground.cornerRadius = 5F.dp
brightnessBackground.setColor(ColorUtils.adjustAlpha(bgColor, 0.5f)) brightnessBackground.setColor(ColorUtils.adjustAlpha(bgColor, 0.5f))
binding.llBrightness.background = brightnessBackground llBrightness.background = brightnessBackground
binding.llBottomBg.setBackgroundColor(bgColor) llBottomBg.setBackgroundColor(bgColor)
binding.fabSearch.backgroundTintList = bottomBackgroundList fabSearch.backgroundTintList = bottomBackgroundList
binding.fabSearch.setColorFilter(textColor) fabSearch.setColorFilter(textColor)
binding.fabAutoPage.backgroundTintList = bottomBackgroundList fabAutoPage.backgroundTintList = bottomBackgroundList
binding.fabAutoPage.setColorFilter(textColor) fabAutoPage.setColorFilter(textColor)
binding.fabReplaceRule.backgroundTintList = bottomBackgroundList fabReplaceRule.backgroundTintList = bottomBackgroundList
binding.fabReplaceRule.setColorFilter(textColor) fabReplaceRule.setColorFilter(textColor)
binding.fabNightTheme.backgroundTintList = bottomBackgroundList fabNightTheme.backgroundTintList = bottomBackgroundList
binding.fabNightTheme.setColorFilter(textColor) fabNightTheme.setColorFilter(textColor)
binding.tvPre.setTextColor(textColor) tvPre.setTextColor(textColor)
binding.tvNext.setTextColor(textColor) tvNext.setTextColor(textColor)
binding.ivCatalog.setColorFilter(textColor) ivCatalog.setColorFilter(textColor)
binding.tvCatalog.setTextColor(textColor) tvCatalog.setTextColor(textColor)
binding.ivReadAloud.setColorFilter(textColor) ivReadAloud.setColorFilter(textColor)
binding.tvReadAloud.setTextColor(textColor) tvReadAloud.setTextColor(textColor)
binding.ivFont.setColorFilter(textColor) ivFont.setColorFilter(textColor)
binding.tvFont.setTextColor(textColor) tvFont.setTextColor(textColor)
binding.ivSetting.setColorFilter(textColor) ivSetting.setColorFilter(textColor)
binding.tvSetting.setTextColor(textColor) tvSetting.setTextColor(textColor)
binding.vwBg.onClick { } vwBg.onClick { }
binding.vwNavigationBar.onClick { } vwNavigationBar.onClick { }
binding.seekBrightness.progress = context.getPrefInt("brightness", 100) seekBrightness.progress = context.getPrefInt("brightness", 100)
upBrightnessState()
bindEvent()
} }
fun upBrightnessState() { fun upBrightnessState() {
@ -128,27 +133,24 @@ class ReadMenu @JvmOverloads constructor(
return context.getPrefBoolean("brightnessAuto", true) || !showBrightnessView return context.getPrefBoolean("brightnessAuto", true) || !showBrightnessView
} }
private fun bindEvent() { private fun bindEvent() = with(binding) {
binding.tvChapterName.onClick { tvChapterName.onClick {
callBack.openSourceEditActivity() callBack.openSourceEditActivity()
} }
binding.tvChapterUrl.onClick { tvChapterUrl.onClick {
context.openUrl(binding.tvChapterUrl.text.toString()) context.openUrl(binding.tvChapterUrl.text.toString())
} }
binding.ivBrightnessAuto.onClick { ivBrightnessAuto.onClick {
context.putPrefBoolean("brightnessAuto", !brightnessAuto()) context.putPrefBoolean("brightnessAuto", !brightnessAuto())
upBrightnessState() upBrightnessState()
} }
//亮度调节 //亮度调节
binding.seekBrightness.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener { seekBrightness.setOnSeekBarChangeListener(object : SeekBarChangeListener {
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
setScreenBrightness(progress) setScreenBrightness(progress)
} }
override fun onStartTrackingTouch(seekBar: SeekBar) {
}
override fun onStopTrackingTouch(seekBar: SeekBar) { override fun onStopTrackingTouch(seekBar: SeekBar) {
context.putPrefInt("brightness", seekBar.progress) context.putPrefInt("brightness", seekBar.progress)
} }
@ -156,75 +158,69 @@ class ReadMenu @JvmOverloads constructor(
}) })
//阅读进度 //阅读进度
binding.seekReadPage.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener { seekReadPage.setOnSeekBarChangeListener(object : SeekBarChangeListener {
override fun onProgressChanged(seekBar: SeekBar, i: Int, b: Boolean) {
}
override fun onStartTrackingTouch(seekBar: SeekBar) {
}
override fun onStopTrackingTouch(seekBar: SeekBar) { override fun onStopTrackingTouch(seekBar: SeekBar) {
ReadBook.skipToPage(seekBar.progress) ReadBook.skipToPage(seekBar.progress)
} }
}) })
//搜索 //搜索
binding.fabSearch.onClick { fabSearch.onClick {
runMenuOut { runMenuOut {
callBack.openSearchActivity(null) callBack.openSearchActivity(null)
} }
} }
//自动翻页 //自动翻页
binding.fabAutoPage.onClick { fabAutoPage.onClick {
runMenuOut { runMenuOut {
callBack.autoPage() callBack.autoPage()
} }
} }
//替换 //替换
binding.fabReplaceRule.onClick { callBack.openReplaceRule() } fabReplaceRule.onClick { callBack.openReplaceRule() }
//夜间模式 //夜间模式
binding.fabNightTheme.onClick { fabNightTheme.onClick {
AppConfig.isNightTheme = !AppConfig.isNightTheme AppConfig.isNightTheme = !AppConfig.isNightTheme
App.INSTANCE.applyDayNight() App.INSTANCE.applyDayNight()
} }
//上一章 //上一章
binding.tvPre.onClick { ReadBook.moveToPrevChapter(upContent = true, toLast = false) } tvPre.onClick { ReadBook.moveToPrevChapter(upContent = true, toLast = false) }
//下一章 //下一章
binding.tvNext.onClick { ReadBook.moveToNextChapter(true) } tvNext.onClick { ReadBook.moveToNextChapter(true) }
//目录 //目录
binding.llCatalog.onClick { llCatalog.onClick {
runMenuOut { runMenuOut {
callBack.openChapterList() callBack.openChapterList()
} }
} }
//朗读 //朗读
binding.llReadAloud.onClick { llReadAloud.onClick {
runMenuOut { runMenuOut {
callBack.onClickReadAloud() callBack.onClickReadAloud()
} }
} }
binding.llReadAloud.onLongClick { llReadAloud.onLongClick {
runMenuOut { callBack.showReadAloudDialog() } runMenuOut { callBack.showReadAloudDialog() }
true true
} }
//界面 //界面
binding.llFont.onClick { llFont.onClick {
runMenuOut { runMenuOut {
callBack.showReadStyle() callBack.showReadStyle()
} }
} }
//设置 //设置
binding.llSetting.onClick { llSetting.onClick {
runMenuOut { runMenuOut {
callBack.showMoreSetting() callBack.showMoreSetting()
} }

@ -13,6 +13,7 @@ import io.legado.app.lib.theme.getPrimaryTextColor
import io.legado.app.service.BaseReadAloudService import io.legado.app.service.BaseReadAloudService
import io.legado.app.service.help.ReadAloud import io.legado.app.service.help.ReadAloud
import io.legado.app.ui.book.read.ReadBookActivity import io.legado.app.ui.book.read.ReadBookActivity
import io.legado.app.ui.widget.seekbar.SeekBarChangeListener
import io.legado.app.utils.ColorUtils import io.legado.app.utils.ColorUtils
import io.legado.app.utils.viewbindingdelegate.viewBinding import io.legado.app.utils.viewbindingdelegate.viewBinding
import org.jetbrains.anko.sdk27.listeners.onClick import org.jetbrains.anko.sdk27.listeners.onClick
@ -78,14 +79,12 @@ class AutoReadDialog : BaseDialogFragment() {
} }
private fun initOnChange() { private fun initOnChange() {
binding.seekAutoRead.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener { binding.seekAutoRead.setOnSeekBarChangeListener(object : SeekBarChangeListener {
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
val speed = if (progress < 10) 10 else progress val speed = if (progress < 10) 10 else progress
binding.tvReadSpeed.text = String.format("%ds", speed) binding.tvReadSpeed.text = String.format("%ds", speed)
} }
override fun onStartTrackingTouch(seekBar: SeekBar) = Unit
override fun onStopTrackingTouch(seekBar: SeekBar) { override fun onStopTrackingTouch(seekBar: SeekBar) {
ReadBookConfig.autoReadSpeed = ReadBookConfig.autoReadSpeed =
if (binding.seekAutoRead.progress < 10) 10 else binding.seekAutoRead.progress if (binding.seekAutoRead.progress < 10) 10 else binding.seekAutoRead.progress

@ -15,6 +15,7 @@ import io.legado.app.service.BaseReadAloudService
import io.legado.app.service.help.ReadAloud import io.legado.app.service.help.ReadAloud
import io.legado.app.service.help.ReadBook import io.legado.app.service.help.ReadBook
import io.legado.app.ui.book.read.ReadBookActivity import io.legado.app.ui.book.read.ReadBookActivity
import io.legado.app.ui.widget.seekbar.SeekBarChangeListener
import io.legado.app.utils.ColorUtils import io.legado.app.utils.ColorUtils
import io.legado.app.utils.getPrefBoolean import io.legado.app.utils.getPrefBoolean
import io.legado.app.utils.observeEvent import io.legado.app.utils.observeEvent
@ -102,25 +103,19 @@ class ReadAloudDialog : BaseDialogFragment() {
upTtsSpeechRate() upTtsSpeechRate()
} }
} }
seekTtsSpeechRate.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener { seekTtsSpeechRate.setOnSeekBarChangeListener(object : SeekBarChangeListener {
override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
}
override fun onStartTrackingTouch(seekBar: SeekBar?) = Unit
override fun onStopTrackingTouch(seekBar: SeekBar?) { override fun onStopTrackingTouch(seekBar: SeekBar) {
AppConfig.ttsSpeechRate = seekTtsSpeechRate.progress AppConfig.ttsSpeechRate = seekBar.progress
upTtsSpeechRate() upTtsSpeechRate()
} }
}) })
seekTimer.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener { seekTimer.setOnSeekBarChangeListener(object : SeekBarChangeListener {
override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) { override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
upTimerText(progress) upTimerText(progress)
} }
override fun onStartTrackingTouch(seekBar: SeekBar?) = Unit override fun onStopTrackingTouch(seekBar: SeekBar) {
override fun onStopTrackingTouch(seekBar: SeekBar?) {
ReadAloud.setTimer(requireContext(), seekTimer.progress) ReadAloud.setTimer(requireContext(), seekTimer.progress)
} }
}) })

@ -51,17 +51,17 @@ class MainActivity : VMBaseActivity<ActivityMainBinding, MainViewModel>(),
return ActivityMainBinding.inflate(layoutInflater) return ActivityMainBinding.inflate(layoutInflater)
} }
override fun onActivityCreated(savedInstanceState: Bundle?) { override fun onActivityCreated(savedInstanceState: Bundle?) = with(binding) {
ATH.applyEdgeEffectColor(binding.viewPagerMain) ATH.applyEdgeEffectColor(viewPagerMain)
ATH.applyBottomNavigationColor(binding.bottomNavigationView) ATH.applyBottomNavigationColor(bottomNavigationView)
binding.viewPagerMain.offscreenPageLimit = 3 viewPagerMain.offscreenPageLimit = 3
binding.viewPagerMain.adapter = TabFragmentPageAdapter(supportFragmentManager) viewPagerMain.adapter = TabFragmentPageAdapter(supportFragmentManager)
binding.viewPagerMain.addOnPageChangeListener(this) viewPagerMain.addOnPageChangeListener(this@MainActivity)
binding.bottomNavigationView.elevation = bottomNavigationView.elevation =
if (AppConfig.elevation < 0) elevation else AppConfig.elevation.toFloat() if (AppConfig.elevation < 0) elevation else AppConfig.elevation.toFloat()
binding.bottomNavigationView.setOnNavigationItemSelectedListener(this) bottomNavigationView.setOnNavigationItemSelectedListener(this@MainActivity)
binding.bottomNavigationView.setOnNavigationItemReselectedListener(this) bottomNavigationView.setOnNavigationItemReselectedListener(this@MainActivity)
binding.bottomNavigationView.menu.findItem(R.id.menu_rss).isVisible = AppConfig.isShowRSS bottomNavigationView.menu.findItem(R.id.menu_rss).isVisible = AppConfig.isShowRSS
} }
override fun onPostCreate(savedInstanceState: Bundle?) { override fun onPostCreate(savedInstanceState: Bundle?) {
@ -78,12 +78,12 @@ class MainActivity : VMBaseActivity<ActivityMainBinding, MainViewModel>(),
}, 3000) }, 3000)
} }
override fun onNavigationItemSelected(item: MenuItem): Boolean { override fun onNavigationItemSelected(item: MenuItem): Boolean = with(binding) {
when (item.itemId) { when (item.itemId) {
R.id.menu_bookshelf -> binding.viewPagerMain.setCurrentItem(0, false) R.id.menu_bookshelf -> viewPagerMain.setCurrentItem(0, false)
R.id.menu_explore -> binding.viewPagerMain.setCurrentItem(1, false) R.id.menu_explore -> viewPagerMain.setCurrentItem(1, false)
R.id.menu_rss -> binding.viewPagerMain.setCurrentItem(2, false) R.id.menu_rss -> viewPagerMain.setCurrentItem(2, false)
R.id.menu_my_config -> binding.viewPagerMain.setCurrentItem(3, false) R.id.menu_my_config -> viewPagerMain.setCurrentItem(3, false)
} }
return false return false
} }
@ -122,15 +122,15 @@ class MainActivity : VMBaseActivity<ActivityMainBinding, MainViewModel>(),
} }
} }
override fun onPageSelected(position: Int) { override fun onPageSelected(position: Int) = with(binding) {
binding.viewPagerMain.hideSoftInput() viewPagerMain.hideSoftInput()
pagePosition = position pagePosition = position
when (position) { when (position) {
0, 1, 3 -> binding.bottomNavigationView.menu.getItem(position).isChecked = true 0, 1, 3 -> bottomNavigationView.menu.getItem(position).isChecked = true
2 -> if (AppConfig.isShowRSS) { 2 -> if (AppConfig.isShowRSS) {
binding.bottomNavigationView.menu.getItem(position).isChecked = true bottomNavigationView.menu.getItem(position).isChecked = true
} else { } else {
binding.bottomNavigationView.menu.getItem(3).isChecked = true bottomNavigationView.menu.getItem(3).isChecked = true
} }
} }
} }

@ -9,6 +9,7 @@ import io.legado.app.R
import io.legado.app.databinding.ViewDetailSeekBarBinding import io.legado.app.databinding.ViewDetailSeekBarBinding
import io.legado.app.lib.theme.bottomBackground import io.legado.app.lib.theme.bottomBackground
import io.legado.app.lib.theme.getPrimaryTextColor import io.legado.app.lib.theme.getPrimaryTextColor
import io.legado.app.ui.widget.seekbar.SeekBarChangeListener
import io.legado.app.utils.ColorUtils import io.legado.app.utils.ColorUtils
import io.legado.app.utils.progressAdd import io.legado.app.utils.progressAdd
import org.jetbrains.anko.sdk27.listeners.onClick import org.jetbrains.anko.sdk27.listeners.onClick
@ -17,7 +18,7 @@ class DetailSeekBar @JvmOverloads constructor(
context: Context, context: Context,
attrs: AttributeSet? = null attrs: AttributeSet? = null
) : FrameLayout(context, attrs), ) : FrameLayout(context, attrs),
SeekBar.OnSeekBarChangeListener { SeekBarChangeListener {
private var binding: ViewDetailSeekBarBinding = private var binding: ViewDetailSeekBarBinding =
ViewDetailSeekBarBinding.inflate(LayoutInflater.from(context), this, true) ViewDetailSeekBarBinding.inflate(LayoutInflater.from(context), this, true)
private val isBottomBackground: Boolean private val isBottomBackground: Boolean
@ -69,15 +70,15 @@ class DetailSeekBar @JvmOverloads constructor(
} }
} }
override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) { override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
upValue(progress) upValue(progress)
} }
override fun onStartTrackingTouch(seekBar: SeekBar?) { override fun onStartTrackingTouch(seekBar: SeekBar) {
} }
override fun onStopTrackingTouch(seekBar: SeekBar?) { override fun onStopTrackingTouch(seekBar: SeekBar) {
onChanged?.invoke(binding.seekBar.progress) onChanged?.invoke(binding.seekBar.progress)
} }

@ -0,0 +1,19 @@
package io.legado.app.ui.widget.seekbar
import android.widget.SeekBar
interface SeekBarChangeListener : SeekBar.OnSeekBarChangeListener {
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
}
override fun onStartTrackingTouch(seekBar: SeekBar) {
}
override fun onStopTrackingTouch(seekBar: SeekBar) {
}
}
Loading…
Cancel
Save