Migrate to Coil3
This commit is contained in:
parent
1ec18536f5
commit
81c39d7323
@ -234,7 +234,7 @@ dependencies {
|
||||
implementation("com.google.android.material:material:1.13.0")
|
||||
implementation("androidx.preference:preference-ktx:1.2.1")
|
||||
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.10.0")
|
||||
implementation("io.coil-kt:coil:2.7.0")
|
||||
implementation("io.coil-kt.coil3:coil:3.1.0")
|
||||
implementation("androidx.core:core-splashscreen:1.2.0")
|
||||
implementation("androidx.window:window:1.5.1")
|
||||
implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.2.0")
|
||||
|
||||
@ -12,15 +12,21 @@ import androidx.core.graphics.drawable.IconCompat
|
||||
import androidx.core.graphics.drawable.toBitmap
|
||||
import androidx.core.graphics.drawable.toDrawable
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import coil.ImageLoader
|
||||
import coil.decode.DataSource
|
||||
import coil.fetch.DrawableResult
|
||||
import coil.fetch.FetchResult
|
||||
import coil.fetch.Fetcher
|
||||
import coil.key.Keyer
|
||||
import coil.memory.MemoryCache
|
||||
import coil.request.ImageRequest
|
||||
import coil.request.Options
|
||||
import coil3.ImageLoader
|
||||
import coil3.asImage
|
||||
import coil3.decode.DataSource
|
||||
import coil3.fetch.FetchResult
|
||||
import coil3.fetch.Fetcher
|
||||
import coil3.fetch.ImageFetchResult
|
||||
import coil3.key.Keyer
|
||||
import coil3.memory.MemoryCache
|
||||
import coil3.request.ImageRequest
|
||||
import coil3.request.Options
|
||||
import coil3.request.SuccessResult
|
||||
import coil3.request.error
|
||||
import coil3.request.lifecycle
|
||||
import coil3.request.target
|
||||
import coil3.toBitmap
|
||||
import org.yuzu.yuzu_emu.R
|
||||
import org.yuzu.yuzu_emu.YuzuApplication
|
||||
import org.yuzu.yuzu_emu.model.Game
|
||||
@ -30,8 +36,11 @@ class GameIconFetcher(
|
||||
private val options: Options
|
||||
) : Fetcher {
|
||||
override suspend fun fetch(): FetchResult {
|
||||
return DrawableResult(
|
||||
drawable = decodeGameIcon(game.path)!!.toDrawable(options.context.resources),
|
||||
val bitmap = decodeGameIcon(game.path)!!
|
||||
val image = bitmap.asImage()
|
||||
|
||||
return ImageFetchResult(
|
||||
image = image,
|
||||
isSampled = false,
|
||||
dataSource = DataSource.DISK
|
||||
)
|
||||
@ -64,8 +73,8 @@ object GameIconUtils {
|
||||
add(GameIconFetcher.Factory())
|
||||
}
|
||||
.memoryCache {
|
||||
MemoryCache.Builder(YuzuApplication.appContext)
|
||||
.maxSizePercent(0.25)
|
||||
MemoryCache.Builder()
|
||||
.maxSizePercent(YuzuApplication.appContext, 0.25)
|
||||
.build()
|
||||
}
|
||||
.build()
|
||||
@ -85,8 +94,19 @@ object GameIconUtils {
|
||||
.lifecycle(lifecycleOwner)
|
||||
.error(R.drawable.default_icon)
|
||||
.build()
|
||||
return imageLoader.execute(request)
|
||||
.drawable!!.toBitmap(config = Bitmap.Config.ARGB_8888)
|
||||
|
||||
val result = imageLoader.execute(request)
|
||||
|
||||
return if (result is SuccessResult) {
|
||||
result.image.toBitmap()
|
||||
} else {
|
||||
val default = ResourcesCompat.getDrawable(
|
||||
YuzuApplication.appContext.resources,
|
||||
R.drawable.default_icon,
|
||||
null
|
||||
)
|
||||
default!!.toBitmap()
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun getShortcutIcon(lifecycleOwner: LifecycleOwner, game: Game): IconCompat {
|
||||
@ -95,9 +115,12 @@ object GameIconUtils {
|
||||
R.drawable.shortcut,
|
||||
null
|
||||
) as LayerDrawable
|
||||
|
||||
val iconBitmap = getGameIcon(lifecycleOwner, game)
|
||||
|
||||
layerDrawable.setDrawableByLayerId(
|
||||
R.id.shortcut_foreground,
|
||||
getGameIcon(lifecycleOwner, game).toDrawable(YuzuApplication.appContext.resources)
|
||||
iconBitmap.toDrawable(YuzuApplication.appContext.resources)
|
||||
)
|
||||
val inset = YuzuApplication.appContext.resources
|
||||
.getDimensionPixelSize(R.dimen.icon_inset)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user