Image: play with a ZoomableBox
This commit is contained in:
parent
ed10fc6651
commit
28770afac0
2 changed files with 122 additions and 3 deletions
|
|
@ -17,16 +17,28 @@
|
|||
package io.element.android.features.messages.impl.media.viewer
|
||||
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.gestures.awaitEachGesture
|
||||
import androidx.compose.foundation.gestures.awaitFirstDown
|
||||
import androidx.compose.foundation.gestures.calculatePan
|
||||
import androidx.compose.foundation.gestures.calculateZoom
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.BoxScope
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.graphicsLayer
|
||||
import androidx.compose.ui.input.pointer.pointerInput
|
||||
import androidx.compose.ui.layout.ContentScale
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.tooling.preview.PreviewParameter
|
||||
import io.element.android.features.messages.impl.media.viewer.model.MediaContentUiModel
|
||||
import io.element.android.libraries.designsystem.components.ZoomableBox
|
||||
import io.element.android.libraries.designsystem.components.blurhash.BlurHashAsyncImage
|
||||
import io.element.android.libraries.designsystem.preview.ElementPreviewDark
|
||||
import io.element.android.libraries.designsystem.preview.ElementPreviewLight
|
||||
|
|
@ -54,14 +66,14 @@ private fun MediaImageViewer(
|
|||
image: MediaContentUiModel.Image,
|
||||
modifier: Modifier = Modifier,
|
||||
) {
|
||||
Box(
|
||||
ZoomableBox(
|
||||
modifier = modifier.fillMaxSize(),
|
||||
contentAlignment = Alignment.Center
|
||||
) {
|
||||
BlurHashAsyncImage(
|
||||
blurHash = image.blurhash,
|
||||
modifier = Modifier.fillMaxSize().zoomable(),
|
||||
model = image.mediaRequestData,
|
||||
contentScale = ContentScale.Crop,
|
||||
contentScale = ContentScale.Fit,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -79,6 +91,7 @@ private fun MediaVideoViewer(
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
@Preview
|
||||
@Composable
|
||||
fun MediaViewerViewLightPreview(@PreviewParameter(MediaViewerStateProvider::class) state: MediaViewerState) =
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue