2

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

<?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。

为什么会出错?谢谢!

截图:在此处输入图像描述

规格

我以一种风格使用此背景:

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

2 回答 2

5

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

你不需要这个吗?

android:endColor="#ffffffff" 
android:startColor="#00ffffff" />
于 2012-04-22T20:49:00.170 回答
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});
于 2012-09-04T00:33:41.393 回答