From 87f24ffca0c2a251f4df09d8f7782f1b337ed024 Mon Sep 17 00:00:00 2001 From: HuanCheng65 <22636177+HuanCheng65@users.noreply.github.com> Date: Tue, 24 Jan 2023 16:37:58 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=9B=BE=E7=89=87=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E5=99=A8=E4=BD=BF=E7=94=A8=20Sketch?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 4 +-- .../tieba/post/ui/widgets/compose/Avatars.kt | 29 +++++++++---------- .../tieba/post/ui/widgets/compose/FeedCard.kt | 2 +- .../tieba/post/ui/widgets/compose/Images.kt | 16 +++++----- .../huanchengfly/tieba/post/utils/utils.kt | 16 ++++------ gradle.properties | 2 +- 6 files changed, 29 insertions(+), 40 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index c3227c91..2d9258e3 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -111,8 +111,6 @@ wire { dependencies { implementation "com.github.germainkevinbusiness:CollapsingTopBarCompose:1.1.7" - implementation "io.coil-kt:coil:2.2.2" - implementation "io.coil-kt:coil-compose:2.2.2" implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.4.1' // implementation 'androidx.compose.material3:material3:1.0.0' @@ -145,7 +143,7 @@ dependencies { implementation "com.google.accompanist:accompanist-swiperefresh:$accompanist_version" implementation "com.google.accompanist:accompanist-webview:$accompanist_version" - def sketch_version = "3.1.0" + def sketch_version = "3.2.0-beta01" implementation "io.github.panpf.sketch3:sketch:$sketch_version" implementation "io.github.panpf.sketch3:sketch-compose:$sketch_version" implementation "io.github.panpf.sketch3:sketch-extensions:$sketch_version" diff --git a/app/src/main/java/com/huanchengfly/tieba/post/ui/widgets/compose/Avatars.kt b/app/src/main/java/com/huanchengfly/tieba/post/ui/widgets/compose/Avatars.kt index a19801a6..d8bd774c 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/ui/widgets/compose/Avatars.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/ui/widgets/compose/Avatars.kt @@ -19,8 +19,9 @@ import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import coil.compose.AsyncImage -import coil.request.ImageRequest +import com.github.panpf.sketch.compose.AsyncImage +import com.github.panpf.sketch.fetch.newResourceUri +import com.github.panpf.sketch.request.DisplayRequest import com.google.accompanist.drawablepainter.rememberDrawablePainter import com.google.accompanist.placeholder.PlaceholderHighlight import com.google.accompanist.placeholder.material.fade @@ -83,9 +84,13 @@ fun Avatar( val context = LocalContext.current when (data) { is Int -> { - Image( - painter = rememberDrawablePainter(drawable = context.getDrawable(data)), + AsyncImage( + request = DisplayRequest(LocalContext.current, newResourceUri(data)) { + placeholder(ImageUtil.getPlaceHolder(context, 0)) + crossfade() + }, contentDescription = contentDescription, + contentScale = ContentScale.Crop, modifier = modifier .size(size) .clip(CircleShape), @@ -104,21 +109,15 @@ fun Avatar( is String? -> { AsyncImage( - model = ImageRequest.Builder(LocalContext.current) - .data(data) - .crossfade(true) - .build(), + request = DisplayRequest(LocalContext.current, data) { + placeholder(ImageUtil.getPlaceHolder(context, 0)) + crossfade() + }, contentDescription = contentDescription, - placeholder = rememberDrawablePainter( - drawable = ImageUtil.getPlaceHolder( - context, - 0 - ) - ), + contentScale = ContentScale.Crop, modifier = modifier .size(size) .clip(CircleShape), - contentScale = ContentScale.Crop ) } diff --git a/app/src/main/java/com/huanchengfly/tieba/post/ui/widgets/compose/FeedCard.kt b/app/src/main/java/com/huanchengfly/tieba/post/ui/widgets/compose/FeedCard.kt index 4d5144cf..dd1c8382 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/ui/widgets/compose/FeedCard.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/ui/widgets/compose/FeedCard.kt @@ -321,8 +321,8 @@ fun FeedCard( NetworkImage( imageUri = media.url, contentDescription = null, - photoViewData = getPhotoViewData(item, index), modifier = Modifier.weight(1f), + photoViewData = getPhotoViewData(item, index), contentScale = ContentScale.Crop ) } diff --git a/app/src/main/java/com/huanchengfly/tieba/post/ui/widgets/compose/Images.kt b/app/src/main/java/com/huanchengfly/tieba/post/ui/widgets/compose/Images.kt index 6c8d0eb8..b5152672 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/ui/widgets/compose/Images.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/ui/widgets/compose/Images.kt @@ -8,9 +8,8 @@ import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext -import coil.compose.AsyncImage -import coil.request.ImageRequest -import com.google.accompanist.drawablepainter.rememberDrawablePainter +import com.github.panpf.sketch.compose.AsyncImage +import com.github.panpf.sketch.request.DisplayRequest import com.huanchengfly.tieba.post.goToActivity import com.huanchengfly.tieba.post.models.protos.PhotoViewData import com.huanchengfly.tieba.post.ui.page.photoview.PhotoViewActivity @@ -21,8 +20,8 @@ import com.huanchengfly.tieba.post.utils.ImageUtil fun NetworkImage( imageUri: String, contentDescription: String?, - photoViewData: PhotoViewData? = null, modifier: Modifier = Modifier, + photoViewData: PhotoViewData? = null, contentScale: ContentScale = ContentScale.Fit, ) { val context = LocalContext.current @@ -39,12 +38,11 @@ fun NetworkImage( } } else Modifier AsyncImage( - model = ImageRequest.Builder(LocalContext.current) - .data(imageUri) - .crossfade(true) - .build(), + request = DisplayRequest(context, imageUri) { + placeholder(ImageUtil.getPlaceHolder(context, 0)) + crossfade() + }, contentDescription = contentDescription, - placeholder = rememberDrawablePainter(drawable = ImageUtil.getPlaceHolder(context, 0)), modifier = modifier.then(clickableModifier), contentScale = contentScale, ) diff --git a/app/src/main/java/com/huanchengfly/tieba/post/utils/utils.kt b/app/src/main/java/com/huanchengfly/tieba/post/utils/utils.kt index aaa1a915..302bd8fc 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/utils/utils.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/utils/utils.kt @@ -19,9 +19,8 @@ import androidx.browser.customtabs.CustomTabsIntent import androidx.core.content.pm.ShortcutInfoCompat import androidx.core.content.pm.ShortcutManagerCompat import androidx.core.graphics.drawable.IconCompat -import coil.Coil -import coil.request.ImageRequest -import coil.request.SuccessResult +import com.github.panpf.sketch.request.LoadRequest +import com.github.panpf.sketch.request.LoadResult import com.google.android.material.snackbar.Snackbar import com.huanchengfly.tieba.post.App import com.huanchengfly.tieba.post.R @@ -273,15 +272,10 @@ suspend fun requestPinShortcut( onFailure: (String) -> Unit = {} ) { if (ShortcutManagerCompat.isRequestPinShortcutSupported(context)) { - val request = ImageRequest.Builder(context) - .data(iconImageUri) - .allowHardware(false) - .build() - val imageResult = Coil.imageLoader(context) - .execute(request) - if (imageResult is SuccessResult) { + val imageResult = LoadRequest(context, iconImageUri).execute() + if (imageResult is LoadResult.Success) { val shortcutInfo = ShortcutInfoCompat.Builder(context, shortcutId) - .setIcon(IconCompat.createWithBitmap(ImageUtil.drawableToBitmap(imageResult.drawable))) + .setIcon(IconCompat.createWithBitmap(imageResult.bitmap)) .setIntent(shortcutIntent) .setShortLabel(label) .build() diff --git a/gradle.properties b/gradle.properties index 4f01b20b..fff71880 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,4 +9,4 @@ org.gradle.caching=true org.gradle.configureondemand=true org.gradle.jvmargs=-Xmx2g -XX:+UseParallelGC -Dfile.encoding=UTF-8 org.gradle.parallel=true -org.gradle.unsafe.configuration-cache=true +# org.gradle.unsafe.configuration-cache=true