According to developers.android you can... and this is the code they used
<?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>
also here's a tutorial
hope this helps
You cannot implement +3 gradient color in a xml file. But you can do it into your java/kotlin code with GradientDrawable class. This is the Java version, replace the array of colors with your colors ids.
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);
This can be achieved by using vector graphics i have made this background gradient in adobe illustrator and then import that vector asset as xml in to android studio and it works perfectly with the scalability of vectors
and here is the code for this vector/xml drawable
<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>
<?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"/>
Create New xml file under drawable folder and follow the code
<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>
In main.xml set your background to the new xml file created in drawable
您可以使用径向渐变的图层列表来完成,然后为不同的项目设置不同的不透明度
In Kotlin you can just use this extension function, code is taken by @Pelanes
fun ImageView.setGradientDrawable(colorArray: IntArray) {
val gradientDrawable = GradientDrawable(
GradientDrawable.Orientation.TOP_BOTTOM, colorArray
)
this.background = gradientDrawable}
In case anyone has this question in regards to how to achieve this kind of results with the new UI toolkit Jetpack Compose then it is fairly simple by way of using the Brush
utility:
@Preview(
device = Devices.PIXEL_4
)
@Composable
public fun GradientComposable() {
@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()
)
}
This creates a linear gradient from the top right most corner down to the left most corner (the offset sets the angle and direction, up or down).
The more colors are supplied at intervals between the first and last colours, the closer to the correct gradient you will get. Here I only use 5 colors.
The resulting background being as follows:
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.