Procházet zdrojové kódy

image load improvement

Milan Jurkulak před 3 roky
rodič
revize
5bcedb0361

+ 29 - 22
app/src/main/kotlin/org/mjdev/tvapp/base/ui/components/image/ImageAny.kt

@@ -28,7 +28,8 @@ import androidx.compose.ui.graphics.vector.ImageVector
 import androidx.compose.ui.layout.ContentScale
 import androidx.compose.ui.res.painterResource
 import androidx.compose.ui.tooling.preview.Preview
-import coil.compose.AsyncImage
+import com.skydoves.landscapist.ImageOptions
+import com.skydoves.landscapist.coil.CoilImage
 import org.mjdev.tvapp.R
 import org.mjdev.tvapp.base.extensions.DrawableExt.asImageBitmap
 import org.mjdev.tvapp.base.extensions.ModifierExt.recomposeHighlighter
@@ -118,34 +119,40 @@ fun ImageAny(
             colorFilter
         )
 
-        is URL -> AsyncImage(
+        is URL -> CoilImage(
             modifier = modifier.recomposeHighlighter(),
-            model = src,
-            contentDescription = contentDescription,
-            alignment = alignment,
-            contentScale = contentScale,
-            alpha = alpha,
-            colorFilter = colorFilter
+            imageModel = { src },
+            imageOptions = ImageOptions(
+                contentScale = contentScale,
+                alignment = alignment,
+                contentDescription = contentDescription,
+                alpha = alpha,
+                colorFilter = colorFilter,
+            ),
         )
 
-        is Uri -> AsyncImage(
+        is Uri -> CoilImage(
             modifier = modifier.recomposeHighlighter(),
-            model = src,
-            contentDescription = contentDescription,
-            alignment = alignment,
-            contentScale = contentScale,
-            alpha = alpha,
-            colorFilter = colorFilter
+            imageModel = { src },
+            imageOptions = ImageOptions(
+                contentScale = contentScale,
+                alignment = alignment,
+                contentDescription = contentDescription,
+                alpha = alpha,
+                colorFilter = colorFilter,
+            ),
         )
 
-        is String -> AsyncImage(
+        is String -> CoilImage(
             modifier = modifier.recomposeHighlighter(),
-            model = src,
-            contentDescription = contentDescription,
-            alignment = alignment,
-            contentScale = contentScale,
-            alpha = alpha,
-            colorFilter = colorFilter
+            imageModel = { src },
+            imageOptions = ImageOptions(
+                contentScale = contentScale,
+                alignment = alignment,
+                contentDescription = contentDescription,
+                alpha = alpha,
+                colorFilter = colorFilter,
+            ),
         )
 
         is ImageVector -> Image(

+ 3 - 6
app/src/main/kotlin/org/mjdev/tvapp/base/ui/components/image/PhotoImage.kt

@@ -30,11 +30,11 @@ import androidx.compose.ui.tooling.preview.Preview
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
 import androidx.core.graphics.drawable.toDrawable
-import coil.ImageLoader
 import com.skydoves.landscapist.ImageOptions
 import com.skydoves.landscapist.coil.CoilImage
 import org.mjdev.tvapp.R
 import org.mjdev.tvapp.base.extensions.ComposeExt.isEditMode
+import org.mjdev.tvapp.base.extensions.ComposeExt.rememberImageLoader
 import org.mjdev.tvapp.base.extensions.DrawableExt.asPhoto
 import org.mjdev.tvapp.base.extensions.ModifierExt.conditional
 import org.mjdev.tvapp.base.extensions.ModifierExt.recomposeHighlighter
@@ -62,13 +62,10 @@ fun PhotoImage(
 ) {
     val isEdit = isEditMode()
     val context = LocalContext.current
+    val imageLoader = rememberImageLoader()
     // todo coil image does not shows
     CoilImage(
-        imageLoader = {
-            ImageLoader(context).newBuilder()
-                .allowHardware(false)
-                .build()
-        },
+        imageLoader = { imageLoader },
         imageModel = { src },
         modifier = modifier.recomposeHighlighter()
             .conditional(isEdit) {