机器人:通过代码线性GradientDrawable变化中心(Android: Change cen

2019-07-18 08:25发布

编辑:看溶液上方

我吓坏了。 所有我想做的事,树立了一个线性GradientDrawable,这改变了梯度的垂直中心...绘制渐变工作正常,但我怎样才能改变它的中心?!?

RelativeLayout bgScreen = (RelativeLayout) findViewById(R.id.player_screen);

GradientDrawable gd = new GradientDrawable(
     GradientDrawable.Orientation.TOP_BOTTOM,
     new int[] {startColor,endColor});

gd.setCornerRadius(0f);
gd.setAlpha(200);
bgScreen.setBackground(gd); 


public void redrawOrChangeBackgroundGradient(){
    //??? either change center of existing
    gd.setGradientCenter(float x, float y) //ONLY works in RADIAL_GRADIENT or SWEEP_GRADIENT.

    //??? or complete redraw Gradient with different center

}

这里有一个例子图片我要如何改变通过代码的梯度

不能是硬的,可以吗?

Answer 1:

以编程方式设置中心线性的缺乏能力GradientDrawable s是一个注册的问题了。

但有一种变通方法在这里描述 。 基本上,你应该创建一个PaintDrawableLinearGradient并将其设置为您的视图的背景绘制。 在此之后的解决方案,你可以设置在中心LinearGradient通过映射颜色来构造positions数组:

浮[]位置

可以为空。 的相对位置[0..1]的颜色阵列中的每个对应的颜色。 如果这是空,颜色沿着渐变线均匀分布。

(未测试,但它应该为你做的伎俩)



文章来源: Android: Change center of linear GradientDrawable via code