【问题标题】:Android gradient color - incorrect resultAndroid渐变颜色 - 结果不正确
【发布时间】:2012-04-22 19:51:04
【问题描述】:

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

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

【问题讨论】:

  • 你能贴一张实际结果的截图吗?也许它可以帮助......
  • 完成。似乎渐变以某种方式重复
  • 为什么十六进制代码中有这么多数字?我不知道这是否有影响或是否重要......
  • 并不是说这会解决你的问题,但你可能希望你的渐变在 #FFFFFFFF 和 #00FFFFFF 之间
  • @nmagerko 前两个是 alpha,接下来是 2 R,然后是 g,b

标签: android colors gradient


【解决方案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});
    

    【讨论】:

      猜你喜欢
      • 2019-09-07
      • 2012-01-17
      • 1970-01-01
      • 1970-01-01
      • 2020-02-23
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 2019-03-14
      相关资源
      最近更新 更多