在背景图像上重复图像渐变

时间:2013-05-31 17:00:59

标签: android image gradient

我从服务器下载图像并将其设置为背景。但我需要将重复图像渐变分配给该背景图像,我有一些文本,我需要在其上显示。

这是我的代码,用于从服务器下载图像并将其设置为后台。

Bitmap bitmap = DownloadImage(imageUrl);
BitmapDrawable bitmapDrawable = new BitmapDrawable(bitmap);
bitmapDrawable.setGravity(Gravity.BOTTOM|Gravity.RIGHT);
//Drawable d = new BitmapDrawable(bitmap);
myLinearLayout.setBackgroundDrawable(bitmapDrawable);   

我创建了一个我需要在背景顶部显示的图层列表。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape android:shape="rectangle">
        <gradient
            android:type="radial" android:gradientRadius="500"
            android:startColor="#17568A"
            android:endColor="#494C4F" />  

    </shape>
</item>
<item>
    <bitmap
        android:src="@drawable/gradient_dish"
        android:tileMode="repeat" />
</item>
</layer-list>        

但我已经将服务器映像分配给布局背景,因此无法在后台分配此xml文件。

我有一个图像“gradient_dish”,我想重复,并希望与背景图像显示。

我该怎么做?请给我一些参考或链接 提前谢谢......

2 个答案:

答案 0 :(得分:2)

使用从Web检索的图像,您可以构建所需的drawable,同时从您发布的xml文件中添加drawable。您可以使用以下方法:

public Drawable createBackground(Bitmap bitmap) {
    Drawable[] layers = new Drawable[3];
    BitmapDrawable bitmapDrawable = new BitmapDrawable(bitmap);
    bitmapDrawable.setGravity(Gravity.BOTTOM | Gravity.RIGHT);
    layers[0] = bitmapDrawable;
    GradientDrawable gd = new GradientDrawable();
    gd.setShape(GradientDrawable.RECTANGLE);
    gd.setGradientRadius(500);
    gd.setGradientType(GradientDrawable.RADIAL_GRADIENT);
    gd.setColors(new int[] { Color.parseColor("#17568A"),
            Color.parseColor("#494C4F") });
    layers[1] = gd;
    BitmapDrawable lastBitmapDrawable = (BitmapDrawable) getResources()
            .getDrawable(R.id.gradient_dish);
    lastBitmapDrawable.setTileModeX(TileMode.REPEAT);
    layers[2] = lastBitmapDrawable;
    LayerDrawable bck = new LayerDrawable(layers);
    return bck;
}

然后你会做:

Bitmap bitmap = DownloadImage(imageUrl);
myLinearLayout.setBackgroundDrawable(createBackground(bitmap)); 

答案 1 :(得分:0)

为什么不将图像作为背景放在一个横跨整个屏幕的简单视图中,然后将其余的布局“放在顶部”并使渐变为半透明(分别从一个开始不透明的颜色,并采用半透明或完全透明的颜色)。 这样,图像将根据需要发光。