我从服务器下载图像并将其设置为背景。但我需要将重复图像渐变分配给该背景图像,我有一些文本,我需要在其上显示。
这是我的代码,用于从服务器下载图像并将其设置为后台。
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”,我想重复,并希望与背景图像显示。
我该怎么做?请给我一些参考或链接 提前谢谢......
答案 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)
为什么不将图像作为背景放在一个横跨整个屏幕的简单视图中,然后将其余的布局“放在顶部”并使渐变为半透明(分别从一个开始不透明的颜色,并采用半透明或完全透明的颜色)。 这样,图像将根据需要发光。