I'm facing a small problem with the LinearGradient definition in XML. What I want is to use the constructor that accepts the array of colors and the array of positions.
This one:
    LinearGradient(float x0, float y0, float x1, float y1,  int[] colors, float[] positions, Shader.TileMode tile)   How do I pass the array in the XML? Here's the example of XML with gradient definition, but the simple one.
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android">     <gradient         android:startColor="#474946"         android:endColor="#181818"         android:angle="270"/>     <corners android:radius="5dp" /> </shape> 
                Designers are trying out different styles and combinations which go best with the Android App. One of the key components of Android being used these days is called GradientDrawable. A GradientDrawable is drawable with a color gradient for buttons, backgrounds, etc.
To create a gradient color we need to create a . xml file in the drawable folder. So go to app -> res -> drawable and right-click on drawable -> New -> Drawable Resource File and create gradient_drawable. xml file.
Unfortunately, the definition of GradientDrawable with XML does not allow more than three colors.
Take a look at the official reference: http://developer.android.com/reference/android/graphics/drawable/GradientDrawable.html.
Example:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android">     <gradient         android:startColor="#474946"         android:centerColor="#ff0000"         android:endColor="#181818"         android:angle="270"/>     <corners android:radius="5dp" /> </shape>   So, in your case you would add one more color using android:CenterColor. But for more than three colors, you'll even need to do it with Java.
@Juriy, @ErickPetru:
+1 for ErickPetru's answer. Although I'd like to mention that there is one more feature available: One cannot only specify the centerColor, but also a center offset, which allows for some more flexibility and sometimes helps to avoid the necessity for Java coding.
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"     android:shape="rectangle" >     <corners         android:radius="5dp" />     <gradient         android:type="linear"         android:startColor="#FF000000"         android:centerColor="#FF303030"         android:endColor="#FFE0E0E0"         android:centerX="0.2"         android:centerY="0.3"         android:angle="270" /> </shape> 
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With