2014-09-26 67 views
0

我想在視圖的背景中繪製一些顏色。混合兩個漸變drawable在android中的視圖

顏色將被放置爲線性漸變和不同的方向。

所以,我做了以下內容:

private Orientation[] orientations = new Orientation[]{Orientation.BL_TR, Orientation.BR_TL, Orientation.TL_BR, Orientation.TR_BL, Orientation.TOP_BOTTOM};  
public void drawBackgroudGradient(RelativeLayout backgroundView, int[] colors){ 
     if (colors != null){ 
      if (colors.length > 1){ 
       for (int i=0; i<colors.length; i++){ 
        backgroundView.setBackgroundDrawable(getGradientDrawable(colors[i], orientations[i])); 
       } 
      }else{ 
       //in case of only one color just set that color as background 
        backgroundView.setBackgroundColor(colors[0]); 
      } 
     } 
    } 

    private GradientDrawable getGradientDrawable(int color, Orientation orientation){ 
     int[] colors = new int[] {color, Color.WHITE}; 

     GradientDrawable drawable = new GradientDrawable(orientation, colors); 
     drawable.setAlpha(125); 
     return drawable; 
    } 

我有一個從起始顏色繪製每個要透明,使所有的梯度是可見的。 但問題是所有的顏色都沒有顯示出來。只有最後一種顏色是通過漸變drawable繪製的。其餘的都看不到。

有人能幫我弄清楚如何混合和顯示所有的顏色?

謝謝。 陽光

+0

使用LayerDrawable作爲您的漸變色的容器 – pskink 2014-09-26 11:15:00

+0

您可以舉一些例子 – Sunny 2014-09-26 11:15:34

+0

backgroundView.setBackgroundDrawable(yourLayerDrawable) – pskink 2014-09-26 11:18:11

回答

1

創建LayerDrawable和它們混合:

private LayerDrawable getGradientDrawable(int color, Orientation orientation){ 
    int[] colors = new int[] {color, Color.WHITE}; 

    GradientDrawable drawable1 = new GradientDrawable(orientation, colors); 
    drawable1.setAlpha(125); 

    GradientDrawable drawable2 = new GradientDrawable(); 
    drawable2.setStroke(4, Color.parseColor("#FFFFFF")); 
    drawable2.setColor(Color.TRANSPARENT); 

    return new LayerDrawable(new Drawable[]{drawable1 , drawable2}); 

} 

drawable2放在drawable1的頂部。