优化
This commit is contained in:
@@ -6,6 +6,9 @@ import io.legado.app.data.entities.BaseSource
|
|||||||
import io.legado.app.data.entities.BookSource
|
import io.legado.app.data.entities.BookSource
|
||||||
import io.legado.app.data.entities.RssSource
|
import io.legado.app.data.entities.RssSource
|
||||||
import io.legado.app.help.coroutine.Coroutine
|
import io.legado.app.help.coroutine.Coroutine
|
||||||
|
import io.legado.app.model.AudioPlay
|
||||||
|
import io.legado.app.model.ReadBook
|
||||||
|
import io.legado.app.model.ReadManga
|
||||||
import io.legado.app.utils.EncoderUtils
|
import io.legado.app.utils.EncoderUtils
|
||||||
import io.legado.app.utils.NetworkUtils
|
import io.legado.app.utils.NetworkUtils
|
||||||
import io.legado.app.utils.splitNotBlank
|
import io.legado.app.utils.splitNotBlank
|
||||||
@@ -27,6 +30,13 @@ object SourceHelp {
|
|||||||
|
|
||||||
fun getSource(key: String?): BaseSource? {
|
fun getSource(key: String?): BaseSource? {
|
||||||
key ?: return null
|
key ?: return null
|
||||||
|
if (ReadBook.bookSource?.bookSourceUrl == key) {
|
||||||
|
return ReadBook.bookSource
|
||||||
|
} else if (AudioPlay.bookSource?.bookSourceUrl == key) {
|
||||||
|
return AudioPlay.bookSource
|
||||||
|
} else if (ReadManga.bookSource?.bookSourceUrl == key) {
|
||||||
|
return ReadManga.bookSource
|
||||||
|
}
|
||||||
return appDb.bookSourceDao.getBookSource(key)
|
return appDb.bookSourceDao.getBookSource(key)
|
||||||
?: appDb.rssSourceDao.getByKey(key)
|
?: appDb.rssSourceDao.getByKey(key)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -220,7 +220,7 @@ object ReadManga : CoroutineScope by MainScope() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
-1, 1 -> {
|
-1, 1 -> {
|
||||||
if (content == null || content.isEmpty()) {
|
if (content == null || (!chapter.isVolume && content.isEmpty())) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
val mangaChapter = getManageChapter(chapter, content)
|
val mangaChapter = getManageChapter(chapter, content)
|
||||||
@@ -597,14 +597,14 @@ object ReadManga : CoroutineScope by MainScope() {
|
|||||||
it.imageCount = imageCount
|
it.imageCount = imageCount
|
||||||
}
|
}
|
||||||
|
|
||||||
if (AppConfig.hideMangaTitle) {
|
if (AppConfig.hideMangaTitle && imageCount > 0) {
|
||||||
return MangaChapter(chapter, list, imageCount)
|
return MangaChapter(chapter, list, imageCount)
|
||||||
}
|
}
|
||||||
|
|
||||||
val pages = mutableListOf<BaseMangaPage>()
|
val pages = mutableListOf<BaseMangaPage>()
|
||||||
|
|
||||||
if (imageCount == 0 && chapter.isVolume) {
|
if (imageCount == 0 && chapter.isVolume) {
|
||||||
pages.add(ReaderLoading(chapter.index, -1, chapter.title))
|
pages.add(ReaderLoading(chapter.index, -1, chapter.title, true))
|
||||||
} else {
|
} else {
|
||||||
pages.add(ReaderLoading(chapter.index, -1, "阅读 ${chapter.title}"))
|
pages.add(ReaderLoading(chapter.index, -1, "阅读 ${chapter.title}"))
|
||||||
pages.addAll(list)
|
pages.addAll(list)
|
||||||
|
|||||||
@@ -17,8 +17,6 @@ import androidx.core.view.isVisible
|
|||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import androidx.recyclerview.widget.PagerSnapHelper
|
import androidx.recyclerview.widget.PagerSnapHelper
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
|
||||||
import androidx.recyclerview.widget.RecyclerView.SCROLL_STATE_IDLE
|
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import com.bumptech.glide.integration.recyclerview.RecyclerViewPreloader
|
import com.bumptech.glide.integration.recyclerview.RecyclerViewPreloader
|
||||||
import com.bumptech.glide.request.target.Target.SIZE_ORIGINAL
|
import com.bumptech.glide.request.target.Target.SIZE_ORIGINAL
|
||||||
@@ -50,6 +48,7 @@ import io.legado.app.ui.book.manga.config.MangaFooterSettingDialog
|
|||||||
import io.legado.app.ui.book.manga.entities.BaseMangaPage
|
import io.legado.app.ui.book.manga.entities.BaseMangaPage
|
||||||
import io.legado.app.ui.book.manga.entities.MangaPage
|
import io.legado.app.ui.book.manga.entities.MangaPage
|
||||||
import io.legado.app.ui.book.manga.recyclerview.MangaAdapter
|
import io.legado.app.ui.book.manga.recyclerview.MangaAdapter
|
||||||
|
import io.legado.app.ui.book.manga.recyclerview.MangaLayoutManager
|
||||||
import io.legado.app.ui.book.manga.recyclerview.ScrollTimer
|
import io.legado.app.ui.book.manga.recyclerview.ScrollTimer
|
||||||
import io.legado.app.ui.book.read.MangaMenu
|
import io.legado.app.ui.book.read.MangaMenu
|
||||||
import io.legado.app.ui.book.read.ReadBookActivity.Companion.RESULT_DELETED
|
import io.legado.app.ui.book.read.ReadBookActivity.Companion.RESULT_DELETED
|
||||||
@@ -82,7 +81,7 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
|||||||
MangaColorFilterDialog.Callback, ScrollTimer.ScrollCallback {
|
MangaColorFilterDialog.Callback, ScrollTimer.ScrollCallback {
|
||||||
|
|
||||||
private val mLayoutManager by lazy {
|
private val mLayoutManager by lazy {
|
||||||
LinearLayoutManager(this)
|
MangaLayoutManager(this)
|
||||||
}
|
}
|
||||||
private val mAdapter: MangaAdapter by lazy {
|
private val mAdapter: MangaAdapter by lazy {
|
||||||
MangaAdapter(this)
|
MangaAdapter(this)
|
||||||
@@ -206,7 +205,7 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
|||||||
setPreScrollListener { _, _, _, position ->
|
setPreScrollListener { _, _, _, position ->
|
||||||
if (mAdapter.isNotEmpty()) {
|
if (mAdapter.isNotEmpty()) {
|
||||||
val item = mAdapter.getItem(position)
|
val item = mAdapter.getItem(position)
|
||||||
if (item is MangaPage) {
|
if (item is BaseMangaPage) {
|
||||||
if (ReadManga.durChapterIndex < item.chapterIndex) {
|
if (ReadManga.durChapterIndex < item.chapterIndex) {
|
||||||
ReadManga.moveToNextChapter()
|
ReadManga.moveToNextChapter()
|
||||||
} else if (ReadManga.durChapterIndex > item.chapterIndex) {
|
} else if (ReadManga.durChapterIndex > item.chapterIndex) {
|
||||||
@@ -215,25 +214,13 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
|||||||
ReadManga.durChapterPos = item.index
|
ReadManga.durChapterPos = item.index
|
||||||
ReadManga.curPageChanged()
|
ReadManga.curPageChanged()
|
||||||
}
|
}
|
||||||
binding.mangaMenu.upSeekBar(item.index, item.imageCount)
|
if (item is MangaPage) {
|
||||||
upInfoBar(item)
|
binding.mangaMenu.upSeekBar(item.index, item.imageCount)
|
||||||
|
upInfoBar(item)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
|
||||||
override fun onScrollStateChanged(
|
|
||||||
recyclerView: RecyclerView,
|
|
||||||
newState: Int
|
|
||||||
) {
|
|
||||||
if (newState == SCROLL_STATE_IDLE &&
|
|
||||||
!canScroll(1) &&
|
|
||||||
ReadManga.hasNextChapter && !loadMoreView.isLoading
|
|
||||||
) {
|
|
||||||
loadMoreView.startLoad()
|
|
||||||
ReadManga.moveToNextChapter()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
binding.webtoonFrame.run {
|
binding.webtoonFrame.run {
|
||||||
onTouchMiddle {
|
onTouchMiddle {
|
||||||
|
|||||||
@@ -4,5 +4,6 @@ data class ReaderLoading(
|
|||||||
override val chapterIndex: Int = 0,
|
override val chapterIndex: Int = 0,
|
||||||
override val index: Int = 0,
|
override val index: Int = 0,
|
||||||
val mMessage: String? = null,
|
val mMessage: String? = null,
|
||||||
|
val isVolume: Boolean = false
|
||||||
) : BaseMangaPage
|
) : BaseMangaPage
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import io.legado.app.model.ReadManga
|
|||||||
import io.legado.app.ui.book.manga.config.MangaColorFilterConfig
|
import io.legado.app.ui.book.manga.config.MangaColorFilterConfig
|
||||||
import io.legado.app.ui.book.manga.entities.MangaPage
|
import io.legado.app.ui.book.manga.entities.MangaPage
|
||||||
import io.legado.app.ui.book.manga.entities.ReaderLoading
|
import io.legado.app.ui.book.manga.entities.ReaderLoading
|
||||||
|
import io.legado.app.utils.dpToPx
|
||||||
|
|
||||||
|
|
||||||
class MangaAdapter(private val context: Context) :
|
class MangaAdapter(private val context: Context) :
|
||||||
@@ -124,6 +125,13 @@ class MangaAdapter(private val context: Context) :
|
|||||||
fun onBind(item: ReaderLoading) {
|
fun onBind(item: ReaderLoading) {
|
||||||
val message = item.mMessage
|
val message = item.mMessage
|
||||||
binding.text.text = message
|
binding.text.text = message
|
||||||
|
itemView.updateLayoutParams {
|
||||||
|
height = if (item.isVolume) {
|
||||||
|
MATCH_PARENT
|
||||||
|
} else {
|
||||||
|
96.dpToPx()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package io.legado.app.ui.book.manga.recyclerview
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
|
||||||
|
class MangaLayoutManager(context: Context) :
|
||||||
|
LinearLayoutManager(context) {
|
||||||
|
|
||||||
|
private val extraLayoutSpace = context.resources.displayMetrics.heightPixels * 3 / 4
|
||||||
|
|
||||||
|
@Deprecated("Deprecated in Java")
|
||||||
|
override fun getExtraLayoutSpace(state: RecyclerView.State?): Int {
|
||||||
|
return extraLayoutSpace
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user