2011-02-18 52 views
10

我想設置一個視圖背景,這是一個垂直條紋的規則網格。條紋在兩種顏色之間交替。 (例如,在一行中,可能有6個像素的淺灰色,後面是2個深灰色像素,重複以填充寬度。)XML中的垂直條紋背景?

使用位圖(或者作爲資源或者用代碼生成)。例如:

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可繪製,而不使用位圖資源?

+0

感謝`BitmapShader`片段的樣品。我一直在努力在XML中做到這一點,並沒有意識到着色器的方法。 – 2013-01-25 15:16:57

回答

7

不幸的,但我敢肯定答案是否定的。

在所需的三項任務中,只有兩項可以在沒有任何代碼的情況下完成。您可以創建條紋圖案的底部,作爲兩個或多個<shape>項目的<layer-list>。您還可以使用<bitmap> XML drawable創建重複圖塊模式。訣竅是需要的中間步驟:<bitmap>將不會接受另一個可繪製的源值(僅用於圖像),所以如果沒有一點代碼的干預來創建一個位圖(就像你寫的那樣) 。

我很想看到應用到更多的可繪製以及瓷磚模式和+1給我的代碼完成創建模式:)

+0

感謝您的反饋。這也是我的印象。太糟糕了。 :( – 2011-02-18 19:31:28