背景
对于我的应用,我创建了一个显示百分比的自定义视图,介于0%和300%之间,显示用户与平均值相比有多好,较低的百分比是更好的分数。自定义视图是一个简单的圆圈,带有SweepGradient
,颜色从绿色到黄色(前100%),从黄色到橙色(第二个100%)或橙色到红色(第三个100) %)。
问题
渐变的中心应位于自定义视图的中心,因此x
将位于canvas.getWidth/2
。但是,我只能在视图的onDraw
方法中访问画布。由于SweepGradient
是不可变的,我必须使用onDraw
方法中的位置(和颜色)创建它。在每个onDraw
上创建一个新的渐变效率不高或不推荐,因为不应在onDraw
中构建新对象。
问题
如何在视图中心有效设置这样的渐变,而不是在onDraw上创建?
额外问题: 为什么SweepRelease不可变?