如何以编程方式设置 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 属性?的主要内容,如果未能解决你的问题,请参考以下文章
如何以编程方式设置 windowDrawsSystemBarBackgrounds?