From 71c67c88263cb1d91b1d3273734ee0a0ba1dba2d Mon Sep 17 00:00:00 2001 From: Horis <8674809+821938089@users.noreply.github.com> Date: Tue, 25 Feb 2025 11:14:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/legado/app/help/glide/ImageLoader.kt | 5 +++-- .../main/bookshelf/style1/books/BooksAdapterList.kt | 3 +++ .../ui/main/bookshelf/style1/books/BooksFragment.kt | 2 +- .../main/java/io/legado/app/ui/main/rss/RssAdapter.kt | 11 ++++++++--- .../java/io/legado/app/ui/main/rss/RssFragment.kt | 4 +++- .../io/legado/app/ui/widget/image/CoverImageView.kt | 6 ++++-- 6 files changed, 22 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/io/legado/app/help/glide/ImageLoader.kt b/app/src/main/java/io/legado/app/help/glide/ImageLoader.kt index 335cbc5de..332cc0e5b 100644 --- a/app/src/main/java/io/legado/app/help/glide/ImageLoader.kt +++ b/app/src/main/java/io/legado/app/help/glide/ImageLoader.kt @@ -5,6 +5,7 @@ import android.graphics.Bitmap import android.graphics.drawable.Drawable import android.net.Uri import androidx.annotation.DrawableRes +import androidx.fragment.app.Fragment import androidx.lifecycle.Lifecycle import com.bumptech.glide.Glide import com.bumptech.glide.RequestBuilder @@ -36,8 +37,8 @@ object ImageLoader { } } - fun load(context: Context, lifecycle: Lifecycle, path: String?): RequestBuilder { - val requestManager = Glide.with(context).lifecycle(lifecycle) + fun load(fragment: Fragment, lifecycle: Lifecycle, path: String?): RequestBuilder { + val requestManager = Glide.with(fragment).lifecycle(lifecycle) return when { path.isNullOrEmpty() -> requestManager.load(path) path.isDataUrl() -> requestManager.load(path) diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksAdapterList.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksAdapterList.kt index 972f32bdc..740930adb 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksAdapterList.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksAdapterList.kt @@ -3,6 +3,7 @@ package io.legado.app.ui.main.bookshelf.style1.books import android.content.Context import android.os.Bundle import android.view.ViewGroup +import androidx.fragment.app.Fragment import androidx.lifecycle.Lifecycle import io.legado.app.base.adapter.ItemViewHolder import io.legado.app.data.entities.Book @@ -15,6 +16,7 @@ import splitties.views.onLongClick class BooksAdapterList( context: Context, + private val fragment: Fragment, private val callBack: CallBack, private val lifecycle: Lifecycle ) : BaseBooksAdapter(context) { @@ -52,6 +54,7 @@ class BooksAdapterList( item.author, false, item.origin, + fragment, lifecycle ) diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksFragment.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksFragment.kt index bf7fb051a..b622c4bf5 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksFragment.kt @@ -69,7 +69,7 @@ class BooksFragment() : BaseFragment(R.layout.fragment_books), private val bookshelfLayout by lazy { AppConfig.bookshelfLayout } private val booksAdapter: BaseBooksAdapter<*> by lazy { if (bookshelfLayout == 0) { - BooksAdapterList(requireContext(), this, viewLifecycleOwner.lifecycle) + BooksAdapterList(requireContext(), this, this, viewLifecycleOwner.lifecycle) } else { BooksAdapterGrid(requireContext(), this) } diff --git a/app/src/main/java/io/legado/app/ui/main/rss/RssAdapter.kt b/app/src/main/java/io/legado/app/ui/main/rss/RssAdapter.kt index 36f2bca83..71b04d480 100644 --- a/app/src/main/java/io/legado/app/ui/main/rss/RssAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/main/rss/RssAdapter.kt @@ -4,6 +4,7 @@ import android.content.Context import android.view.View import android.view.ViewGroup import androidx.appcompat.widget.PopupMenu +import androidx.fragment.app.Fragment import androidx.lifecycle.Lifecycle import com.bumptech.glide.request.RequestOptions import io.legado.app.R @@ -15,8 +16,12 @@ import io.legado.app.help.glide.ImageLoader import io.legado.app.help.glide.OkHttpModelLoader import splitties.views.onLongClick -class RssAdapter(context: Context, val callBack: CallBack, val lifecycle: Lifecycle) : - RecyclerAdapter(context) { +class RssAdapter( + context: Context, + private val fragment: Fragment, + private val callBack: CallBack, + private val lifecycle: Lifecycle +) : RecyclerAdapter(context) { override fun getViewBinding(parent: ViewGroup): ItemRssBinding { return ItemRssBinding.inflate(inflater, parent, false) @@ -32,7 +37,7 @@ class RssAdapter(context: Context, val callBack: CallBack, val lifecycle: Lifecy tvName.text = item.sourceName val options = RequestOptions() .set(OkHttpModelLoader.sourceOriginOption, item.sourceUrl) - ImageLoader.load(context, lifecycle, item.sourceIcon) + ImageLoader.load(fragment, lifecycle, item.sourceIcon) .apply(options) .centerCrop() .placeholder(R.drawable.image_rss) diff --git a/app/src/main/java/io/legado/app/ui/main/rss/RssFragment.kt b/app/src/main/java/io/legado/app/ui/main/rss/RssFragment.kt index 9840375c3..e5f78b929 100644 --- a/app/src/main/java/io/legado/app/ui/main/rss/RssFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/rss/RssFragment.kt @@ -59,7 +59,9 @@ class RssFragment() : VMBaseFragment(R.layout.fragment_rss), private val binding by viewBinding(FragmentRssBinding::bind) override val viewModel by viewModels() - 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 { binding.titleBar.findViewById(R.id.search_view) } diff --git a/app/src/main/java/io/legado/app/ui/widget/image/CoverImageView.kt b/app/src/main/java/io/legado/app/ui/widget/image/CoverImageView.kt index c9c503231..1c0c97c20 100644 --- a/app/src/main/java/io/legado/app/ui/widget/image/CoverImageView.kt +++ b/app/src/main/java/io/legado/app/ui/widget/image/CoverImageView.kt @@ -9,6 +9,7 @@ import android.graphics.Typeface import android.graphics.drawable.Drawable import android.text.TextPaint import android.util.AttributeSet +import androidx.fragment.app.Fragment import androidx.lifecycle.Lifecycle import com.bumptech.glide.load.DataSource import com.bumptech.glide.load.engine.GlideException @@ -182,6 +183,7 @@ class CoverImageView @JvmOverloads constructor( author: String? = null, loadOnlyWifi: Boolean = false, sourceOrigin: String? = null, + fragment: Fragment? = null, lifecycle: Lifecycle? = null ) { this.bitmapPath = path @@ -197,8 +199,8 @@ class CoverImageView @JvmOverloads constructor( if (sourceOrigin != null) { options = options.set(OkHttpModelLoader.sourceOriginOption, sourceOrigin) } - val builder = if (lifecycle != null) { - ImageLoader.load(context, lifecycle, path) + val builder = if (fragment != null && lifecycle != null) { + ImageLoader.load(fragment, lifecycle, path) } else { ImageLoader.load(context, path)//Glide自动识别http://,content://和file:// }