我想创建一个重复图像的背景,并在其上添加从白色到透明的渐变。因此,它应该从视图顶部的全白开始,然后在底部完全透明,完全看到背景图像。 我的代码:
<?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:
规范
我以一种风格使用这个背景:
<resources>
<style name="Theme.NoBackground" parent="android:Theme">
<item name="android:windowBackground">@drawable/background</item>"
</style>
</resources>
答案 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});