优化
This commit is contained in:
@@ -5,6 +5,7 @@ import android.graphics.Bitmap
|
|||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import androidx.annotation.DrawableRes
|
import androidx.annotation.DrawableRes
|
||||||
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Lifecycle
|
import androidx.lifecycle.Lifecycle
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import com.bumptech.glide.RequestBuilder
|
import com.bumptech.glide.RequestBuilder
|
||||||
@@ -36,8 +37,8 @@ object ImageLoader {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun load(context: Context, lifecycle: Lifecycle, path: String?): RequestBuilder<Drawable> {
|
fun load(fragment: Fragment, lifecycle: Lifecycle, path: String?): RequestBuilder<Drawable> {
|
||||||
val requestManager = Glide.with(context).lifecycle(lifecycle)
|
val requestManager = Glide.with(fragment).lifecycle(lifecycle)
|
||||||
return when {
|
return when {
|
||||||
path.isNullOrEmpty() -> requestManager.load(path)
|
path.isNullOrEmpty() -> requestManager.load(path)
|
||||||
path.isDataUrl() -> requestManager.load(path)
|
path.isDataUrl() -> requestManager.load(path)
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package io.legado.app.ui.main.bookshelf.style1.books
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Lifecycle
|
import androidx.lifecycle.Lifecycle
|
||||||
import io.legado.app.base.adapter.ItemViewHolder
|
import io.legado.app.base.adapter.ItemViewHolder
|
||||||
import io.legado.app.data.entities.Book
|
import io.legado.app.data.entities.Book
|
||||||
@@ -15,6 +16,7 @@ import splitties.views.onLongClick
|
|||||||
|
|
||||||
class BooksAdapterList(
|
class BooksAdapterList(
|
||||||
context: Context,
|
context: Context,
|
||||||
|
private val fragment: Fragment,
|
||||||
private val callBack: CallBack,
|
private val callBack: CallBack,
|
||||||
private val lifecycle: Lifecycle
|
private val lifecycle: Lifecycle
|
||||||
) : BaseBooksAdapter<ItemBookshelfListBinding>(context) {
|
) : BaseBooksAdapter<ItemBookshelfListBinding>(context) {
|
||||||
@@ -52,6 +54,7 @@ class BooksAdapterList(
|
|||||||
item.author,
|
item.author,
|
||||||
false,
|
false,
|
||||||
item.origin,
|
item.origin,
|
||||||
|
fragment,
|
||||||
lifecycle
|
lifecycle
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ class BooksFragment() : BaseFragment(R.layout.fragment_books),
|
|||||||
private val bookshelfLayout by lazy { AppConfig.bookshelfLayout }
|
private val bookshelfLayout by lazy { AppConfig.bookshelfLayout }
|
||||||
private val booksAdapter: BaseBooksAdapter<*> by lazy {
|
private val booksAdapter: BaseBooksAdapter<*> by lazy {
|
||||||
if (bookshelfLayout == 0) {
|
if (bookshelfLayout == 0) {
|
||||||
BooksAdapterList(requireContext(), this, viewLifecycleOwner.lifecycle)
|
BooksAdapterList(requireContext(), this, this, viewLifecycleOwner.lifecycle)
|
||||||
} else {
|
} else {
|
||||||
BooksAdapterGrid(requireContext(), this)
|
BooksAdapterGrid(requireContext(), this)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import android.content.Context
|
|||||||
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.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Lifecycle
|
import androidx.lifecycle.Lifecycle
|
||||||
import com.bumptech.glide.request.RequestOptions
|
import com.bumptech.glide.request.RequestOptions
|
||||||
import io.legado.app.R
|
import io.legado.app.R
|
||||||
@@ -15,8 +16,12 @@ import io.legado.app.help.glide.ImageLoader
|
|||||||
import io.legado.app.help.glide.OkHttpModelLoader
|
import io.legado.app.help.glide.OkHttpModelLoader
|
||||||
import splitties.views.onLongClick
|
import splitties.views.onLongClick
|
||||||
|
|
||||||
class RssAdapter(context: Context, val callBack: CallBack, val lifecycle: Lifecycle) :
|
class RssAdapter(
|
||||||
RecyclerAdapter<RssSource, ItemRssBinding>(context) {
|
context: Context,
|
||||||
|
private val fragment: Fragment,
|
||||||
|
private val callBack: CallBack,
|
||||||
|
private val lifecycle: Lifecycle
|
||||||
|
) : RecyclerAdapter<RssSource, ItemRssBinding>(context) {
|
||||||
|
|
||||||
override fun getViewBinding(parent: ViewGroup): ItemRssBinding {
|
override fun getViewBinding(parent: ViewGroup): ItemRssBinding {
|
||||||
return ItemRssBinding.inflate(inflater, parent, false)
|
return ItemRssBinding.inflate(inflater, parent, false)
|
||||||
@@ -32,7 +37,7 @@ class RssAdapter(context: Context, val callBack: CallBack, val lifecycle: Lifecy
|
|||||||
tvName.text = item.sourceName
|
tvName.text = item.sourceName
|
||||||
val options = RequestOptions()
|
val options = RequestOptions()
|
||||||
.set(OkHttpModelLoader.sourceOriginOption, item.sourceUrl)
|
.set(OkHttpModelLoader.sourceOriginOption, item.sourceUrl)
|
||||||
ImageLoader.load(context, lifecycle, item.sourceIcon)
|
ImageLoader.load(fragment, lifecycle, item.sourceIcon)
|
||||||
.apply(options)
|
.apply(options)
|
||||||
.centerCrop()
|
.centerCrop()
|
||||||
.placeholder(R.drawable.image_rss)
|
.placeholder(R.drawable.image_rss)
|
||||||
|
|||||||
@@ -59,7 +59,9 @@ class RssFragment() : VMBaseFragment<RssViewModel>(R.layout.fragment_rss),
|
|||||||
|
|
||||||
private val binding by viewBinding(FragmentRssBinding::bind)
|
private val binding by viewBinding(FragmentRssBinding::bind)
|
||||||
override val viewModel by viewModels<RssViewModel>()
|
override val viewModel by viewModels<RssViewModel>()
|
||||||
private val adapter by lazy { RssAdapter(requireContext(), this, viewLifecycleOwner.lifecycle) }
|
private val adapter by lazy {
|
||||||
|
RssAdapter(requireContext(), this, this, viewLifecycleOwner.lifecycle)
|
||||||
|
}
|
||||||
private val searchView: SearchView by lazy {
|
private val searchView: SearchView by lazy {
|
||||||
binding.titleBar.findViewById(R.id.search_view)
|
binding.titleBar.findViewById(R.id.search_view)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import android.graphics.Typeface
|
|||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
import android.text.TextPaint
|
import android.text.TextPaint
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Lifecycle
|
import androidx.lifecycle.Lifecycle
|
||||||
import com.bumptech.glide.load.DataSource
|
import com.bumptech.glide.load.DataSource
|
||||||
import com.bumptech.glide.load.engine.GlideException
|
import com.bumptech.glide.load.engine.GlideException
|
||||||
@@ -182,6 +183,7 @@ class CoverImageView @JvmOverloads constructor(
|
|||||||
author: String? = null,
|
author: String? = null,
|
||||||
loadOnlyWifi: Boolean = false,
|
loadOnlyWifi: Boolean = false,
|
||||||
sourceOrigin: String? = null,
|
sourceOrigin: String? = null,
|
||||||
|
fragment: Fragment? = null,
|
||||||
lifecycle: Lifecycle? = null
|
lifecycle: Lifecycle? = null
|
||||||
) {
|
) {
|
||||||
this.bitmapPath = path
|
this.bitmapPath = path
|
||||||
@@ -197,8 +199,8 @@ class CoverImageView @JvmOverloads constructor(
|
|||||||
if (sourceOrigin != null) {
|
if (sourceOrigin != null) {
|
||||||
options = options.set(OkHttpModelLoader.sourceOriginOption, sourceOrigin)
|
options = options.set(OkHttpModelLoader.sourceOriginOption, sourceOrigin)
|
||||||
}
|
}
|
||||||
val builder = if (lifecycle != null) {
|
val builder = if (fragment != null && lifecycle != null) {
|
||||||
ImageLoader.load(context, lifecycle, path)
|
ImageLoader.load(fragment, lifecycle, path)
|
||||||
} else {
|
} else {
|
||||||
ImageLoader.load(context, path)//Glide自动识别http://,content://和file://
|
ImageLoader.load(context, path)//Glide自动识别http://,content://和file://
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user