根据developers.android的说法,你可以...这是他们使用的代码
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<gradient
android:angle="45"
android:endColor="#87CEEB"
android:centerColor="#768087"
android:startColor="#000"
android:type="linear" />
</shape>
还有这里有一个教程。
希望这可以帮助到你。
您无法在XML文件中实现+3渐变色。但是,您可以使用GradientDrawable类将其放入Java / Kotlin代码中。这是Java版本,在其中用您的颜色ID替换颜色数组。
GradientDrawable gradientDrawable = new GradientDrawable(
Orientation.TOP_BOTTOM,
new int[]{ContextCompat.getColor(this, R.color.color1),
ContextCompat.getColor(this, R.color.color2),
ContextCompat.getColor(this, R.color.color3),
ContextCompat.getColor(this, R.color.color4)});
findViewById(R.id.background).setBackground(gradientDrawable);
findelementbyid
,当我将您的代码添加到我的代码末尾时,它会产生错误,并且那些findelementbyid
变成了红色! - C.F.G通过使用矢量图形可以实现这一点。 我使用Adobe Illustrator创建了此背景渐变,然后将该矢量资产作为xml导入到Android Studio中,它可以完美地与矢量的可伸缩性配合使用。
这是用于此矢量/XML可绘制对象的代码。
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="987.3dp"
android:height="870.3dp"
android:viewportWidth="987.3"
android:viewportHeight="870.3">
<path android:pathData="M0,870l0,-870l987,0l0,870z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="493.5"
android:endY="870"
android:startX="493.5"
android:startY="2.6645353E-14"
android:type="linear">
<item
android:color="#FF0000FF"
android:offset="0" />
<item
android:color="#FF6AFCFF"
android:offset="0.1974" />
<item
android:color="#FFE900D0"
android:offset="0.3786" />
<item
android:color="#FFFF7D15"
android:offset="0.5906" />
<item
android:color="#FFE6FF55"
android:offset="0.7513" />
<item
android:color="#FFED1E79"
android:offset="1" />
</gradient>
</aapt:attr>
</path>
</vector>
为了以水平方向显示渐变,使用以下xml代码:<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="96dp"
android:height="96dp"
android:viewportHeight="100"
android:viewportWidth="100">
<path android:pathData="M0,870l0,-870l987,0l0,870z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="99"
android:endY="50"
android:startX="1"
android:startY="50"
android:type="linear">
<item
android:color="#FF0000FF"
android:offset="0" />
<item
android:color="#FF6AFCFF"
android:offset="0.1974" />
<item
android:color="#FFE900D0"
android:offset="0.3786" />
<item
android:color="#FFFF7D15"
android:offset="0.5906" />
<item
android:color="#FFE6FF55"
android:offset="0.7513" />
<item
android:color="#FFED1E79"
android:offset="1" />
</gradient>
</aapt:attr>
</path>
</vector>
了解更多有关VectorDrawable渐变的信息 - https://blog.stylingandroid.com/vectordrawable-gradients-part1/
<?xml version="1.0" encoding="utf-8"?>
<gradient
android:endColor="#243638"
android:centerColor="#3c6869"
android:startColor="#7d695c"
android:type="radial"
android:centerX="100%"
android:centerY="100%"
android:gradientRadius="900dp"/>
Brush
实用程序即可:@Preview(
device = Devices.PIXEL_4
)
@Composable
public fun GradientComposable() {
val topRightCornerColor = Color(0xFF365d6a)
val second = Color(0xFF126e87)
val third = Color(0xFF769397)
val fourth = Color(0xFF555361)
val bottomLeftCornerColor = Color(0xFF4f4858)
val angleBrush = Brush.linearGradient(
colors = listOf(
topRightCornerColor,
second,
third,
fourth,
bottomLeftCornerColor
), start = Offset(
x = Float.POSITIVE_INFINITY,
y = 0f
), end = Offset(
x = 0f,
y = Float.POSITIVE_INFINITY
)
)
Box(
modifier = Modifier
.background(brush = angleBrush)
.fillMaxSize()
)
}
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<gradient
android:startColor="#1fa2ff"
android:centerColor="#12d8fa"
android:endColor="#a6ffcb"
android:angle="45"/>
</shape>
</item>
你可以使用径向渐变的图层列表来实现,然后为不同的项目设置不同的透明度。
fun ImageView.setGradientDrawable(colorArray: IntArray) {
val gradientDrawable = GradientDrawable(
GradientDrawable.Orientation.TOP_BOTTOM, colorArray
)
this.background = gradientDrawable}
android.graphics.drawable.GradientDrawable
。 - pskink