Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在背景图像上重复图像渐变_Android_Image_Gradient - Fatal编程技术网

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

Android 在背景图像上重复图像渐变,android,image,gradient,Android,Image,Gradient,我正在从服务器下载图像并将其设置为背景。但我需要为背景图像指定重复图像梯度,我有一些文本需要在上面显示 这是我的代码,用于从服务器下载图像并将其设置为后台 Bitmap bitmap = DownloadImage(imageUrl); BitmapDrawable bitmapDrawable = new BitmapDrawable(bitmap); bitmapDrawable.setGravity(Gravity.BOTTOM|Gravity.RIGHT); //Drawable d =

我正在从服务器下载图像并将其设置为背景。但我需要为背景图像指定重复图像梯度,我有一些文本需要在上面显示

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

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文件

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

我该怎么做?请给我提供一些参考或链接。

提前感谢…

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

使用从web检索的图像,您可以构建所需的可绘制内容,也可以从发布的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)); 

难道你不能简单地从从web获取的
BitmapDrawable
代码中创建一个
LayerDrawable
,然后从你发布的xml drawable中创建一个层,并将其用作背景吗?你对此有任何参考代码吗?看看这个你能发布你的答案吗。。。你解决了我的问题,所以我只想把这笔赏金分配给你……:-)你能帮我一个忙吗。它在模拟器上工作,但在真实设备上不工作。。。怎样?谢谢…@SandipArmalPatil它以哪种方式不工作(不完整,图像根本不显示)?另外,您在哪个设备上测试了它,使用了什么api级别(您是否也尝试过在其他设备上测试)?