2012-04-22 3 views
2

Я хочу создать фон повторяющихся изображений и над ним добавить градиент от белого до прозрачного. Таким образом, он должен начинаться как полный белый в верхней части представления, а затем заканчиваться как полностью прозрачный снизу, где фоновые изображения полностью видны. Мой код:Цвет градиента Android - неправильный результат

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

Вы можете оставить screeenshot фактического результата? Может быть, это может помочь ... –

+0

Готово. Кажется, что градиент повторяется как-то – ali

+0

Почему так много цифр в шестнадцатеричном коде? Я не знаю, имеет ли это значение или имеет значение ... – nmagerko

ответ

2

Ваш градиент проходит от прозрачного до черного непрозрачного белого.

Вам это не нужно?

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

Я столкнулся с тем же вопросом, что и серая тень (когда используется градиент, отличный от черного). Способ, которым я обходился, - изменить альфу на цвет, который будет использоваться для градиента.

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

Вы также можете уменьшить размер градиента, передавая цвет с альфа 0, чтобы массив несколько раз

colour = alpha(color, 0XFF); 
int gradientColor = alpha(color, 0X00); 
GradientDrawable shadow = new GradientDrawable(Orientation.TOP_BOTTOM, 
    new int[]{color, gradientColor, gradientColor, gradientColor}); 
Смежные вопросы