首页 文章

Android渐变颜色 - 结果不正确

提问于
浏览
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 .

为什么会出错?谢谢!

ScreenShoot:
enter image description here

规格

我在一个风格中使用这个背景:

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

2 回答

  • 1

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

    你不需要这个吗?

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

    我遇到了灰色阴影(当使用除黑色以外的渐变时)的相同问题 . 我绕过它的方法是改变用于渐变的颜色的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});
    

相关问题