feat: 图片加载器使用 Sketch

This commit is contained in:
HuanCheng65 2023-01-24 16:37:58 +08:00
parent 4773f41870
commit 87f24ffca0
No known key found for this signature in database
GPG Key ID: E9031EF91A805148
6 changed files with 29 additions and 40 deletions

View File

@ -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"

View File

@ -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
)
}

View File

@ -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
)
}

View File

@ -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,
)

View File

@ -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()

View File

@ -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