Android渐变颜色 - 结果不正确

时间:2012-04-22 19:51:04

标签: android colors gradient

我想创建一个重复图像的背景,并在其上添加从白色到透明的渐变。因此,它应该从视图顶部的全白开始,然后在底部完全透明,完全看到背景图像。 我的代码:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
    <bitmap 
        android:dither="true" 
        android:src="@drawable/bg" 
        android:tileMode="repeat" >
    </bitmap>
</item>
<item>
    <shape>
        <gradient 
            android:angle="90" 
            android:endColor="#ffffffff" 
            android:startColor="#00000000" />
    </shape>
</item>

问题在于我没有从白色( #ffffff )到透明但从灰色渐变到透明的渐变。使用颜色选择器,我得到 endColor 的代码,它是#dfdfdf。

为什么会出错?谢谢!

ScreenShoot:enter image description here

规范

我以一种风格使用这个背景:

<resources>
<style name="Theme.NoBackground" parent="android:Theme">
    <item name="android:windowBackground">@drawable/background</item>"
</style>
</resources>

2 个答案:

答案 0 :(得分:2)

您的渐变从透明黑色到不透明白色。

你不需要吗?

android:endColor="#ffffffff" 
android:startColor="#00ffffff" />

答案 1 :(得分:1)

我遇到了灰色阴影(当使用除黑色以外的渐变时)的相同问题。我绕过它的方法是改变用于渐变的颜色的alpha。

public static int alpha(int color, int alpha)
{
    return Color.argb(alpha,
            Color.red(color),
            Color.green(color),
            Color.blue(color));
}

您还可以通过将alpha值为0的颜色多次传递给数组来减小渐变的大小

colour = alpha(color, 0XFF);
int gradientColor = alpha(color, 0X00); 
GradientDrawable shadow = new GradientDrawable(Orientation.TOP_BOTTOM,
    new int[]{color, gradientColor, gradientColor, gradientColor});