1

サーバーから画像をダウンロードして背景に設定しています。しかし、その背景画像に繰り返し画像グラデーションを割り当てる必要があり、その上に表示する必要があるテキストがあります。

これは、サーバーから画像をダウンロードして背景に設定するために使用される私のコードです。

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

背景の上に表示する必要がある1つのレイヤーリストを作成します。

<?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」が1つあります。

これどうやってするの?参照またはリンクを提供してください。
前もって感謝します...

4

2 に答える 2

2

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

画面全体にまたがる単純なビューの背景として画像を配置し、レイアウトの残りの部分をその「上」に配置して、グラデーションを半透明にしないのはなぜですか (resp. 非透明から開始)色を変更して、半透明または完全に透明な色にします)。このようにして、イメージは希望どおりに真を通して輝きます。

于 2013-06-03T08:47:45.617 に答える