XML中的垂直条纹背景?

时间:2011-02-18 17:25:58

标签: android background drawable xml-drawable

我想设置一个视图背景,它是垂直条纹的常规网格。条纹在两种颜色之间交替。 (例如,在一行中,可能有6个像素的浅灰色,然后是2个深灰色的像素,重复以填充宽度。)

使用Bitmap(作为资源或在代码中生成)很容易。例如:

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 drawables这样做,而不使用位图资源?

1 个答案:

答案 0 :(得分:7)

不幸的是,但我很确定答案是肯定的。

在所需的三项任务中,只有两项可以在没有任何代码的情况下完成。您可以将条纹图案的基础创建为两个或更多<layer-list>项的<shape>。您还可以使用<bitmap> XML drawable创建重复图块模式。诀窍是所需的中间步骤:<bitmap>不会接受另一个drawable作为源值(只是一个图像)所以没有办法在没有一点代码干预的情况下链接两者来创建一个Bitmap(比如什么你写的。)

我希望看到平铺模式也应用于更多的drawables,并且+1给我一个在代码中完全创建模式的示例:)