Use ZoomableAsyncImage for zoomable subsampling

This commit is contained in:
skydoves 2024-02-22 00:33:42 +09:00
parent af632c4529
commit 960f7e876b
No known key found for this signature in database
GPG key ID: 09885E498AF452F2
3 changed files with 10 additions and 28 deletions

View file

@ -51,5 +51,5 @@ dependencies {
implementation "com.github.skydoves:landscapist-coil:$landscapist_version" implementation "com.github.skydoves:landscapist-coil:$landscapist_version"
implementation "com.github.skydoves:landscapist-placeholder:$landscapist_version" implementation "com.github.skydoves:landscapist-placeholder:$landscapist_version"
implementation "me.saket.telephoto:zoomable:0.6.2" implementation "me.saket.telephoto:zoomable-image-coil:0.8.0"
} }

View file

@ -24,16 +24,9 @@ import androidx.compose.material.MaterialTheme
import androidx.compose.material.Surface import androidx.compose.material.Surface
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import com.skydoves.landscapist.ImageOptions
import com.skydoves.landscapist.coil.CoilImage
import com.skydoves.landscapist.components.rememberImageComponent
import com.skydoves.landscapist.placeholder.shimmer.ShimmerPlugin
import io.getstream.androiddeveloperroadmap.ui.theme.AndroidDeveloperRoadmapTheme import io.getstream.androiddeveloperroadmap.ui.theme.AndroidDeveloperRoadmapTheme
import io.getstream.androiddeveloperroadmap.ui.theme.shimmerHighLight import me.saket.telephoto.zoomable.coil.ZoomableAsyncImage
import me.saket.telephoto.zoomable.rememberZoomableState
import me.saket.telephoto.zoomable.zoomable
class MainActivity : ComponentActivity() { class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
@ -53,20 +46,10 @@ class MainActivity : ComponentActivity() {
@Composable @Composable
private fun AndroidRoadmap() { private fun AndroidRoadmap() {
val background = MaterialTheme.colors.background ZoomableAsyncImage(
CoilImage( modifier = Modifier.fillMaxSize(),
modifier = Modifier model = "https://user-images.githubusercontent.com/24237865/144350753-5a52e6e5-3517-476c-8e5c-adad919abe8e.png",
.fillMaxSize() contentDescription = null
.zoomable(rememberZoomableState()),
imageModel = { "https://user-images.githubusercontent.com/24237865/144350753-5a52e6e5-3517-476c-8e5c-adad919abe8e.png" },
component = rememberImageComponent {
// shows a shimmering effect when loading an image.
+ShimmerPlugin(
baseColor = background,
highlightColor = shimmerHighLight
)
},
imageOptions = ImageOptions(contentScale = ContentScale.Fit)
) )
} }

View file

@ -1,16 +1,15 @@
buildscript { buildscript {
ext { ext {
compose_version = '1.5.2' compose_version = '1.6.1'
compose_compiler_version = '1.5.3' compose_compiler_version = '1.5.9'
compose_activity_version = '1.7.2' compose_activity_version = '1.7.2'
landscapist_version = '2.2.10' landscapist_version = '2.3.1'
zoomable_version = '1.5.1'
} }
} }
plugins { plugins {
id 'com.android.application' version '8.1.2' apply false id 'com.android.application' version '8.1.2' apply false
id 'org.jetbrains.kotlin.android' version '1.9.10' apply false id 'org.jetbrains.kotlin.android' version '1.9.22' apply false
id "com.diffplug.spotless" version "6.7.0" apply false id "com.diffplug.spotless" version "6.7.0" apply false
} }