From 7d8c7ed3e62fe4556a9a8dd356ff1e237a63e6d7 Mon Sep 17 00:00:00 2001 From: HuanCheng65 <22636177+HuanCheng65@users.noreply.github.com> Date: Fri, 5 May 2023 22:56:45 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=9C=8B=E5=9B=BE=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E5=BA=95=E6=A0=8F=E5=86=85=E5=AE=B9=E9=A2=9C=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/page/photoview/PhotoViewActivity.kt | 137 +++++++++--------- 1 file changed, 70 insertions(+), 67 deletions(-) diff --git a/app/src/main/java/com/huanchengfly/tieba/post/ui/page/photoview/PhotoViewActivity.kt b/app/src/main/java/com/huanchengfly/tieba/post/ui/page/photoview/PhotoViewActivity.kt index b7b1781d..850a38a6 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/ui/page/photoview/PhotoViewActivity.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/ui/page/photoview/PhotoViewActivity.kt @@ -5,6 +5,7 @@ import android.net.Uri import android.os.Build import android.view.MotionEvent import androidx.activity.viewModels +import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Row @@ -13,6 +14,8 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.foundation.pager.HorizontalPager +import androidx.compose.foundation.pager.rememberPagerState import androidx.compose.material.CircularProgressIndicator import androidx.compose.material.Icon import androidx.compose.material.IconButton @@ -40,9 +43,6 @@ import com.github.panpf.sketch.displayImage import com.github.panpf.sketch.zoom.Edge import com.github.panpf.sketch.zoom.ReadModeDecider import com.github.panpf.sketch.zoom.SketchZoomImageView -import com.google.accompanist.pager.ExperimentalPagerApi -import com.google.accompanist.pager.HorizontalPager -import com.google.accompanist.pager.rememberPagerState import com.huanchengfly.tieba.post.R import com.huanchengfly.tieba.post.arch.BaseComposeActivityWithParcelable import com.huanchengfly.tieba.post.arch.collectPartialAsState @@ -50,6 +50,7 @@ import com.huanchengfly.tieba.post.models.protos.PhotoViewData import com.huanchengfly.tieba.post.toastShort import com.huanchengfly.tieba.post.ui.common.theme.compose.ExtendedTheme import com.huanchengfly.tieba.post.ui.widgets.compose.LazyLoad +import com.huanchengfly.tieba.post.ui.widgets.compose.ProvideContentColor import com.huanchengfly.tieba.post.utils.ImageUtil import com.huanchengfly.tieba.post.utils.download import kotlinx.coroutines.launch @@ -137,7 +138,7 @@ class PhotoViewActivity : BaseComposeActivityWithParcelable() { override val dataExtraKey: String = EXTRA_PHOTO_VIEW_DATA - @OptIn(ExperimentalPagerApi::class) + @OptIn(ExperimentalFoundationApi::class) @Composable override fun createContent(data: PhotoViewData) { LazyLoad(loaded = viewModel.initialized) { @@ -174,7 +175,7 @@ class PhotoViewActivity : BaseComposeActivityWithParcelable() { } Box(modifier = Modifier.fillMaxSize()) { HorizontalPager( - count = pageCount, + pageCount = pageCount, state = pagerState, key = { "${items[it].originUrl}_${items[it].overallIndex}" @@ -207,71 +208,73 @@ class PhotoViewActivity : BaseComposeActivityWithParcelable() { .fillMaxWidth() .align(Alignment.BottomCenter) ) { - Row( - modifier = Modifier - .fillMaxWidth() - .background( - Brush.verticalGradient( - listOf( - Color.Black.copy(alpha = 0.0f), - Color.Black.copy(alpha = 0.5f) + ProvideContentColor(color = Color.White) { + Row( + modifier = Modifier + .fillMaxWidth() + .background( + Brush.verticalGradient( + listOf( + Color.Black.copy(alpha = 0.0f), + Color.Black.copy(alpha = 0.5f) + ) ) ) - ) - .padding(horizontal = 16.dp), - verticalAlignment = Alignment.CenterVertically - ) { - val index = pagerState.currentPage - if (totalAmount > 1) { - val picIndex = items[index].overallIndex ?: (index + 1) - Text( - text = "$picIndex / $totalAmount", - modifier = Modifier.weight(1f) - ) - } else { - Spacer(modifier = Modifier.weight(1f)) - } - IconButton(onClick = { - toastShort(R.string.toast_preparing_share_pic) - ImageUtil.download( - this@PhotoViewActivity, - items[index].originUrl, - true - ) { uri: Uri -> - val chooser = Intent(Intent.ACTION_SEND).apply { - type = Intent.normalizeMimeType("image/jpeg") - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - putExtra(Intent.EXTRA_STREAM, uri) - addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) - } else { - putExtra(Intent.EXTRA_STREAM, uri) - } - }.let { - Intent.createChooser( - it, - getString(R.string.title_share_pic) - ) - } - runCatching { - startActivity(chooser) - } + .padding(horizontal = 16.dp), + verticalAlignment = Alignment.CenterVertically + ) { + val index = pagerState.currentPage + if (totalAmount > 1) { + val picIndex = items[index].overallIndex ?: (index + 1) + Text( + text = "$picIndex / $totalAmount", + modifier = Modifier.weight(1f) + ) + } else { + Spacer(modifier = Modifier.weight(1f)) + } + IconButton(onClick = { + toastShort(R.string.toast_preparing_share_pic) + ImageUtil.download( + this@PhotoViewActivity, + items[index].originUrl, + true + ) { uri: Uri -> + val chooser = Intent(Intent.ACTION_SEND).apply { + type = Intent.normalizeMimeType("image/jpeg") + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + putExtra(Intent.EXTRA_STREAM, uri) + addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) + } else { + putExtra(Intent.EXTRA_STREAM, uri) + } + }.let { + Intent.createChooser( + it, + getString(R.string.title_share_pic) + ) + } + runCatching { + startActivity(chooser) + } + } + }) { + Icon( + imageVector = Icons.Rounded.Share, + contentDescription = stringResource(id = R.string.title_share_pic) + ) + } + IconButton(onClick = { + ImageUtil.download( + this@PhotoViewActivity, + items[index].originUrl + ) + }) { + Icon( + imageVector = Icons.Rounded.Download, + contentDescription = stringResource(id = R.string.desc_download_pic) + ) } - }) { - Icon( - imageVector = Icons.Rounded.Share, - contentDescription = stringResource(id = R.string.title_share_pic) - ) - } - IconButton(onClick = { - ImageUtil.download( - this@PhotoViewActivity, - items[index].originUrl - ) - }) { - Icon( - imageVector = Icons.Rounded.Download, - contentDescription = stringResource(id = R.string.desc_download_pic) - ) } } }