Android:通过代码更改线性GradientDrawable的中心

时间:2013-01-17 15:51:33

标签: android android-layout android-drawable

编辑:看上面的解决方案

我吓坏了。所有我想要做的,是设置一个线性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

}

这是一个图片示例,说明我想如何通过代码

更改渐变

enter image description here

不能那么难,可以吗?

1 个答案:

答案 0 :(得分:2)

缺乏以编程方式为线性GradientDrawable设置中心的能力已经是registered issue

但是有一种解决方法described here。基本上,您应该从LinearGradient创建PaintDrawable并将其设置为您的视图背景可绘制。在此解决方案之后,您可以通过将颜色映射到LinearGradient数组来设置positions构造函数中的中心:

  

浮动[]位置

     

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

(未经过测试,但它应该为您提供帮助)