11

縦縞の規則的なグリッドであるビューの背景を設定したいと思います。ストライプは2色の間で交互になります。(たとえば、1つの行全体で、6ピクセルのライトグレーの後に2ピクセルのダークグレーが続き、幅を埋めるために繰り返される場合があります。)

ビットマップを使用してこれを行うのは簡単です(リソースとして、またはコードで生成されます)。例えば:

ShapeDrawable bg = new ShapeDrawable(new RectShape());
int[] pixels = new int[] { 0xFFCCCCCC, 0xFFCCCCCC, 0xFFCCCCCC,
    0xFFCCCCCC, 0xFFCCCCCC, 0xFFCCCCCC, 0xFF999999, 0xFF999999};
Bitmap bm = Bitmap.createBitmap(pixels, 8, 1, Bitmap.Config.ARGB_8888);
Shader shader = new BitmapShader(bm,
    Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
bg.getPaint().setShader(shader);
view.setBackgroundDrawable(bg);

ビットマップリソースを使用せずに、これをXMLドローアブルとして厳密に行う方法はありますか?

4

1 に答える 1

7

残念ながら、答えはノーだと確信しています。

必要な3つのタスクのうち、コードなしで実行できるのは2つだけです。ストライプ柄のベースは、<layer-list>2つ以上の<shape>アイテムで作成できます。<bitmap>XMLドローアブルを使用して繰り返しタイルパターンを作成することもできます。トリックは必要な中間ステップです。<bitmap>ソース値として別のドローアブル(画像のみ)を受け入れないため、ビットマップを作成するための小さなコード(あなたが書いたもののような)の介入なしに2つをリンクする方法はありません。

より多くのドローアブルに適用されるタイルモードと、コードで完全にパターンを作成するサンプルを提供するための+1を見てみたいです:)

于 2011-02-18T17:57:01.710 に答える