Android Jetpack 组合渐变
Android Jetpack compose gradient
是否可以使用 Jetpack Compose 在可绘制图像上绘制渐变?
fun HeroCover() {
Column {
val image = +imageResource(R.drawable.edge_of_tomorrow_poster)
Container(modifier = Height(440.dp) wraps Expanded) {
Clip(shape = RoundedCornerShape(8.dp)) {
DrawImage(image = image)
}
}
}
}
我想在图像顶部绘制半透明渐变。
这是一个 LinearGradientShader 如何在 Compose 中用于绘制对象的示例。我想你可以使用类似的东西来得到你想要的
https://gist.github.com/lelandrichardson/35b2743e1acd5d672f963f92aca57d4a#file-shimmer-kt-L83
更新:这是我在 kotlin lang slack 频道中偶然发现的另一种方法 -
Box(
modifier = Modifier
.preferredSize(500.dp, 500.dp)
.drawBackground(
HorizontalGradient(
0.0f to Color.Red,
0.5f to Color.Green,
1.0f to Color.Blue,
startX = Px.Zero,
endX = 500.dp.toPx()
)
)
)
来源:https://kotlinlang.slack.com/archives/CJLTWPH7S/p1590430288092800
这是一种从 Jetsnack 示例代码中获得启发的方法:
用你自己的颜色替换 transparent & darkChocolate。
@Composable
fun GradientView(modifier: Modifier = Modifier) {
Box(modifier = modifier.verticalGradientBackground(listOf(transparent, darkChocolate)))
}
fun Modifier.verticalGradientBackground(
colors: List<Color>
) = drawWithCache {
val gradient = VerticalGradient(startY = 0.0f, endY = size.width, colors = colors)
onDraw {
drawRect(brush = gradient)
}
}
使用 Jetpack Compose BETA02:
Box(
modifier = Modifier
.background(
brush = Brush.verticalGradient(
colors = listOf(
MaterialTheme.colors.primary,
MaterialTheme.colors.primaryVariant
)
)
)
) {
Content()
}
是否可以使用 Jetpack Compose 在可绘制图像上绘制渐变?
fun HeroCover() {
Column {
val image = +imageResource(R.drawable.edge_of_tomorrow_poster)
Container(modifier = Height(440.dp) wraps Expanded) {
Clip(shape = RoundedCornerShape(8.dp)) {
DrawImage(image = image)
}
}
}
}
我想在图像顶部绘制半透明渐变。
这是一个 LinearGradientShader 如何在 Compose 中用于绘制对象的示例。我想你可以使用类似的东西来得到你想要的
https://gist.github.com/lelandrichardson/35b2743e1acd5d672f963f92aca57d4a#file-shimmer-kt-L83
更新:这是我在 kotlin lang slack 频道中偶然发现的另一种方法 -
Box(
modifier = Modifier
.preferredSize(500.dp, 500.dp)
.drawBackground(
HorizontalGradient(
0.0f to Color.Red,
0.5f to Color.Green,
1.0f to Color.Blue,
startX = Px.Zero,
endX = 500.dp.toPx()
)
)
)
来源:https://kotlinlang.slack.com/archives/CJLTWPH7S/p1590430288092800
这是一种从 Jetsnack 示例代码中获得启发的方法: 用你自己的颜色替换 transparent & darkChocolate。
@Composable
fun GradientView(modifier: Modifier = Modifier) {
Box(modifier = modifier.verticalGradientBackground(listOf(transparent, darkChocolate)))
}
fun Modifier.verticalGradientBackground(
colors: List<Color>
) = drawWithCache {
val gradient = VerticalGradient(startY = 0.0f, endY = size.width, colors = colors)
onDraw {
drawRect(brush = gradient)
}
}
使用 Jetpack Compose BETA02:
Box(
modifier = Modifier
.background(
brush = Brush.verticalGradient(
colors = listOf(
MaterialTheme.colors.primary,
MaterialTheme.colors.primaryVariant
)
)
)
) {
Content()
}