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

Posted

技术标签:

【中文标题】如何以编程方式设置 GradientDrawable 的 android:angle 属性?【英文标题】:How to set android:angle property of GradientDrawable programmatically? 【发布时间】:2014-03-07 15:18:46 【问题描述】:

这是我的颜色列表:

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 动画交叉淡入 b/w nth 和 (n+1)th drawables。

现在我的布局是这样的:

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

所以我想以编程方式设置每个 GradientDrawable 的角度(试错法)(不能使用 xml,因为我在代码中创建可绘制对象,否则我必须创建 5 个 xml,每个可绘制对象一个)。

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

请帮忙!

【问题讨论】:

【参考方案1】:

试试:

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));

【讨论】:

以上是关于如何以编程方式设置 GradientDrawable 的 android:angle 属性?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式设置scrollview高度

如何以编程方式设置图像源

如何以编程方式设置 windowDrawsSystemBarBackgrounds?

Android:如何以编程方式设置 LinearLayout 边距

如何以编程方式设置 UIView 的自动调整大小掩码?

如何在 Objective C 中以编程方式设置集合视图?