编辑:看上面的解决方案
我吓坏了。所有我想要做的,是设置一个线性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
}
这是一个图片示例,说明我想如何通过代码
更改渐变
不能那么难,可以吗?
答案 0 :(得分:2)
缺乏以编程方式为线性GradientDrawable
设置中心的能力已经是registered issue。
但是有一种解决方法described here。基本上,您应该从LinearGradient
创建PaintDrawable
并将其设置为您的视图背景可绘制。在此解决方案之后,您可以通过将颜色映射到LinearGradient
数组来设置positions
构造函数中的中心:
浮动[]位置
可能为空。每种相应颜色的相对位置[0..1] 在颜色数组中。如果为null,则分布颜色 均匀地沿着渐变线。
(未经过测试,但它应该为您提供帮助)