3

编辑:看看上面的解决方案

我吓坏了。我只想做的就是设置一个线性 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

}

这是我想如何通过代码更改渐变的图片示例

在此处输入图像描述

不可能那么难,可以吗?

4

1 回答 1

2

缺乏以编程方式为线性GradientDrawables 设置中心的能力已经是一个已注册的问题

但是这里描述了一种解决方法。基本上,您应该PaintDrawable从 a创建一个LinearGradient并将其设置为视图的背景可绘制对象。按照此解决方案,您可以LinearGradient通过将颜色映射到positions数组来在构造函数中设置中心:

浮动 [] 位置

可能为空。颜色数组中每个对应颜色的相对位置 [0..1]。如果为空,则颜色沿渐变线均匀分布。

(未经测试,但它应该为您解决问题)

于 2013-01-17T16:47:31.997 回答