我想在jetpack compose中创建动画bottomAppBar(类似于图像),但是jetpack compose中的Fab位置只是中心或末端,我需要至少将FAB移动到左侧,我的代码是:

@Composable
fun BottomBarSample() {
Scaffold(
floatingActionButton = {
FloatingActionButton(
shape = CircleShape,
onClick = {},
) {
Icon(imageVector = Icons.Filled.Add, contentDescription = "icon")
}
},
floatingActionButtonPosition = FabPosition.End,
isFloatingActionButtonDocked = true,
bottomBar = {
BottomAppBar(backgroundColor = Color.Cyan, cutoutShape = CircleShape) {
}
}
){
//body
}
}
Run Code Online (Sandbox Code Playgroud) android floating-action-button android-layout-direction android-jetpack-compose
我下载了图像,最初即使它们是png,它们也有浅灰色和深灰色的矩形,这些矩形不透明并删除了它们。
并使用此示例代码进行检查,将原始代码中的可绘制对象替换为下面的可绘制对象,我得到结果
看起来它可以与 Android View 一起使用,但是当我使用 Jetpack Canvas 作为
androidx.compose.foundation.Canvas(modifier = Modifier.size(500.dp),
onDraw = {
drawImage(imageBitmapDst)
drawImage(imageBitmapSrc, blendMode = BlendMode.SrcIn)
})
Run Code Online (Sandbox Code Playgroud)
BlendMode.SrcIn 在黑色矩形上绘制蓝色矩形,其他模式也不会返回正确的结果。BlendMode.SrcOut 返回黑屏。
并使用 2 张图像堆叠在一起Box
val imageBitmapSrc: ImageBitmap = imageResource(id = R.drawable.c_src)
val imageBitmapDst: ImageBitmap = imageResource(id = R.drawable.c_dst)
Box {
Image(bitmap = imageBitmapSrc)
Image(
bitmap = imageBitmapDst,
colorFilter = ColorFilter(color = Color.Unspecified, blendMode = BlendMode.SrcOut)
)
}
Run Code Online (Sandbox Code Playgroud)
仅蓝色 src 矩形可见。
也尝试过Painter,但也无法使其工作
val imageBitmapSrc: ImageBitmap = imageResource(id = R.drawable.c_src) …Run Code Online (Sandbox Code Playgroud) 如何为撰写中的框制作彩虹边框动画,我看到的所有示例都是针对圆形的,并且它们使用旋转和绘制,但我真正需要的是为撰写中的框制作相同的动画。
\n谢谢
\n使用旋转但它没有 \xc2\xb4t 工作
\nandroid-animation kotlin android-jetpack-compose android-jetpack-compose-canvas android-jetpack-compose-animation
我对在 Compose 中制作此视图有疑问,但我不知道如何实现它。

我当前的代码如下所示:
Box(
modifier = Modifier
.fillMaxSize()
.height(300.dp)
) {
Canvas(modifier = Modifier.matchParentSize()) {
drawRoundRect(
color = Color.Yellow,
cornerRadius = CornerRadius(16.dp.toPx(), 16.dp.toPx())
)
drawRoundRect(
color = Color.White,
topLeft = Offset(
x = size.width / 5,
y = size.height - 60.dp.toPx()
),
size = Size((size.width / 5) * 3, 50.dp.toPx() * 2),
cornerRadius = CornerRadius(24.dp.toPx(), 24.dp.toPx()),
)
}
Box(
modifier = Modifier
.fillMaxSize()
.padding(16.dp)
) {
Text(
text = "Test",
modifier = Modifier.align(Alignment.BottomCenter)
)
}
}
Run Code Online (Sandbox Code Playgroud)
结果如下:

kotlin android-jetpack-compose android-jetpack-compose-canvas
假设我在下面编写了以下代码。
背景洋红色圆圈,顶部有默认黑色的文本。
当文本颜色位于圆圈上方时,我想将其混合为白色。
Canvas(
modifier = Modifier.size(256.dp),
onDraw = {
drawCircle(
color = Color.Magenta,
radius = 50f,
center = Offset(
x = size.width / 2,
y = size.height / 2),
)
val textSize = textMeasurer.measure(text = AnnotatedString("A"))
drawText(
textMeasurer = textMeasurer,
text = "A",
style = TextStyle(
color = Color.Black,
fontSize = 14.sp
),
topLeft = Offset(
x = size.width / 2 - 100f - (textSize.size.width / 2),
y = size.height / 2 - (textSize.size.height / 2)
)
)
drawText( …Run Code Online (Sandbox Code Playgroud) android android-canvas android-jetpack-compose android-jetpack-compose-canvas
我想在相机预览上方创建一个半透明图层,如下所示:
我在我的应用程序中完成了相机预览,我想要的只是在预览上有一个半透明的图层,带有剪裁的卡片形状,如图所示(带有圆角)。
所以:全屏相机预览,上面有一个全屏半透明覆盖层,其中有一个卡片状的孔被切掉
我怎样才能做到这一点?
android ×3
android-jetpack-compose-canvas ×3
kotlin ×2
android-jetpack-compose-animation ×1
canvas ×1
porter-duff ×1