1

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

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

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”,我想重复它并想用背景图像显示。

我怎样才能做到这一点?请给我一些参考或链接。
提前致谢...

4

2 回答 2

2

使用您从网络上检索到的图像,您可以构建所需的可绘制对象,还可以从您发布的 xml 文件中添加可绘制对象。您可以使用以下方法:

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)); 
于 2013-06-03T15:15:55.327 回答
0

为什么不将图像作为背景放在一个跨越整个屏幕的简单视图中,然后将布局的其余部分放在“顶部”,并使渐变半透明(分别从不透明开始颜色并转到半透明或完全透明的颜色)。这样,图像将根据需要通过真实的方式闪耀。

于 2013-06-03T08:47:45.617 回答