如何以编程方式设置GradientDrawable的android:angle属性?

时间:2014-02-10 10:33:40

标签: java android android-layout gradient

这是我的颜色列表:

static ArrayList<Integer> colors;
static {
    colors = new ArrayList<Integer>();
    colors.add(Color.parseColor("#43CFCF"));
    colors.add(Color.parseColor("#1C6E9B"));
    colors.add(Color.parseColor("#AC88C0"));
    colors.add(Color.parseColor("#EE5640"));
    colors.add(Color.parseColor("#EFBF4D"));
}

这是我的可绘制数组:

static Drawable[] drawables;
static {
    drawables = new Drawable[5];
    drawables[0] = new GradientDrawable(Orientation.TL_BR,  new int[]{colors.get(0), colors.get(1)});
    drawables[1] = new GradientDrawable(Orientation.TL_BR,  new int[]{colors.get(1), colors.get(2)});
    drawables[2] = new GradientDrawable(Orientation.TL_BR,  new int[]{colors.get(2), colors.get(3)});
    drawables[3] = new GradientDrawable(Orientation.TL_BR,  new int[]{colors.get(3), colors.get(4)});
    drawables[4] = new GradientDrawable(Orientation.TL_BR,  new int[]{colors.get(4), colors.get(0)});
}

现在,我正在迭代drawable [],并使用alpha动画交叉淡入淡出第二和第(n + 1)个drawable。

现在这就是我的布局:

enter image description here

我的布局是矩形(GradientDrawable.Orientation:Topleft-BottomRight),但此方向值不是从我的矩形的右上边界到左下边界设置我的渐变线(颜色之间)。如果我的布局是SquareShape,它将完美地工作。

所以我想以编程方式设置每个GradientDrawable的角度(反复试验)(不能使用xml,因为我在代码中创建drawables,否则我必须创建5个xmls,每个drawable一个)。

另外,如果我的方向是TL_BR,android:angle的值如何工作?角度是否随参考(轴)变化到TL_BR线(0弧度)。

请帮忙!

1 个答案:

答案 0 :(得分:0)

尝试:

drawables[0] = new GradientDrawable(GradientDrawable.Orientation.TL_BR,  new int[]{colors.get(0), colors.get(1)});

而不是:

drawables[0] = new GradientDrawable(Orientation.TL_BR,  new int[]{colors.get(0), colors.get(1)});