优化
This commit is contained in:
@@ -1,11 +1,17 @@
|
|||||||
package io.legado.app.ui.main.rss
|
package io.legado.app.ui.main.rss
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.graphics.drawable.Drawable
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.appcompat.widget.PopupMenu
|
import androidx.appcompat.widget.PopupMenu
|
||||||
import androidx.lifecycle.Lifecycle
|
import androidx.lifecycle.Lifecycle
|
||||||
|
import com.bumptech.glide.load.DataSource
|
||||||
|
import com.bumptech.glide.load.engine.GlideException
|
||||||
|
import com.bumptech.glide.load.resource.gif.GifDrawable
|
||||||
|
import com.bumptech.glide.request.RequestListener
|
||||||
import com.bumptech.glide.request.RequestOptions
|
import com.bumptech.glide.request.RequestOptions
|
||||||
|
import com.bumptech.glide.request.target.Target
|
||||||
import io.legado.app.R
|
import io.legado.app.R
|
||||||
import io.legado.app.base.adapter.ItemViewHolder
|
import io.legado.app.base.adapter.ItemViewHolder
|
||||||
import io.legado.app.base.adapter.RecyclerAdapter
|
import io.legado.app.base.adapter.RecyclerAdapter
|
||||||
@@ -33,6 +39,35 @@ class RssAdapter(context: Context, val callBack: CallBack, val lifecycle: Lifecy
|
|||||||
val options = RequestOptions()
|
val options = RequestOptions()
|
||||||
.set(OkHttpModelLoader.sourceOriginOption, item.sourceUrl)
|
.set(OkHttpModelLoader.sourceOriginOption, item.sourceUrl)
|
||||||
ImageLoader.load(lifecycle, item.sourceIcon)
|
ImageLoader.load(lifecycle, item.sourceIcon)
|
||||||
|
.listener(object : RequestListener<Drawable> {
|
||||||
|
|
||||||
|
override fun onLoadFailed(
|
||||||
|
e: GlideException?,
|
||||||
|
model: Any?,
|
||||||
|
target: Target<Drawable>,
|
||||||
|
isFirstResource: Boolean
|
||||||
|
): Boolean {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onResourceReady(
|
||||||
|
resource: Drawable,
|
||||||
|
model: Any,
|
||||||
|
target: Target<Drawable>?,
|
||||||
|
dataSource: DataSource,
|
||||||
|
isFirstResource: Boolean
|
||||||
|
): Boolean {
|
||||||
|
if (resource is GifDrawable
|
||||||
|
&& !lifecycle.currentState.isAtLeast(Lifecycle.State.RESUMED)
|
||||||
|
) {
|
||||||
|
ivIcon.post {
|
||||||
|
resource.stop()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
.apply(options)
|
.apply(options)
|
||||||
.centerCrop()
|
.centerCrop()
|
||||||
.placeholder(R.drawable.image_rss)
|
.placeholder(R.drawable.image_rss)
|
||||||
|
|||||||
@@ -143,7 +143,9 @@ class RssFragment() : VMBaseFragment<RssViewModel>(R.layout.fragment_rss),
|
|||||||
private fun initGroupData() {
|
private fun initGroupData() {
|
||||||
groupsFlowJob?.cancel()
|
groupsFlowJob?.cancel()
|
||||||
groupsFlowJob = lifecycleScope.launch {
|
groupsFlowJob = lifecycleScope.launch {
|
||||||
appDb.rssSourceDao.flowGroupEnabled().conflate().collect {
|
appDb.rssSourceDao.flowGroupEnabled().catch {
|
||||||
|
AppLog.put("订阅界面获取分组数据失败\n${it.localizedMessage}", it)
|
||||||
|
}.flowOn(IO).conflate().collect {
|
||||||
groups.clear()
|
groups.clear()
|
||||||
it.map { group ->
|
it.map { group ->
|
||||||
groups.addAll(group.splitNotBlank(AppPattern.splitGroupRegex))
|
groups.addAll(group.splitNotBlank(AppPattern.splitGroupRegex))
|
||||||
|
|||||||
Reference in New Issue
Block a user