混合两个渐变drawable为android中的视图

时间:2014-09-26 11:06:34

标签: android view gradient android-drawable

我试图在视图的背景中绘制一些颜色。

颜色应作为线性渐变放置在不同的方向上。

所以我做了以下事情:

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从起始颜色变为透明,以便所有渐变都可见。 但问题是所有的颜色都没有出现。仅通过渐变可绘制绘制最后一种颜色。其余的都看不到。

有人可以帮我弄清楚如何混合和显示所有颜色吗?

感谢。 晴天

1 个答案:

答案 0 :(得分: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的顶部。