XML中的垂直条纹背景?

Posted

技术标签:

【中文标题】XML中的垂直条纹背景?【英文标题】:Vertical-striped background in XML? 【发布时间】:2011-06-29 23:47:51 【问题描述】:

我想设置一个垂直条纹规则网格的视图背景。条纹在两种颜色之间交替。 (例如,在一行中,可能有 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 可绘制对象来执行此操作?

【问题讨论】:

感谢BitmapShader sn-p。我在 XML 中努力做到这一点,并且不知道着色器方法。 【参考方案1】:

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

在所需的三项任务中,只有两项无需任何代码即可完成。您可以将条纹模式的基础创建为两个或更多 <shape> 项目的 <layer-list>。您还可以使用<bitmap> XML 可绘制对象创建重复的平铺图案。诀窍是所需的中间步骤:<bitmap> 不会接受另一个可绘制对象作为源值(只有图像),因此如果没有一点代码的干预来创建位图(就像你所拥有的一样),就无法将两者链接起来写)。

我希望看到平铺模式也应用于更多可绘制对象,并且 +1 为我提供了一个完全在代码中创建模式的示例 :)

【讨论】:

感谢您的反馈。这也是我的印象。太糟糕了。 :(

以上是关于XML中的垂直条纹背景?的主要内容,如果未能解决你的问题,请参考以下文章

画出特殊的背景

[css 揭秘] :CSS揭秘 技巧:条纹背景

《CSS揭秘》读书笔记-条纹背景

iOS开发_条纹背景

CSS3做出条纹大背景

css CSS动画阴影文本 - 条纹背景