我正在绘制一个径向渐变作为选择的发光效果。一切都在工作,直到我在渐变之上画了另一个圆圈。首先,这是我的渐变和代码:
径向渐变。请注意,大小和位置是动态设置的,因此这里的值没有意义:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<gradient
android:endColor="#0025AAE1"
android:gradientRadius="0"
android:startColor="#FF25AAE1"
android:type="radial" />
<size
android:height="5dp"
android:width="5dp" />
</shape>
现在是我的绘图代码。
在构造函数中初始化:
circle = (GradientDrawable)context.getResources().getDrawable(R.drawable.test_gradient);
绘图代码: public void draw(Canvas canvas,Thumb thumb) { float x = thumb.getX(); float y = thumb.getY();
paint.setColor(borderColor);
canvas.drawCircle(x, y, radius, paint);
paint.setColor(centerColor);
canvas.drawCircle(x, y, radius - radiusBorder, paint);
if (thumb.isSelected())
{
int circleRadius = radius + 10;
circle.setGradientRadius(circleRadius);
circle.setBounds((int)x - circleRadius, (int)y - circleRadius, (int)x + circleRadius, (int)y + circleRadius);
circle.draw(canvas);
// This circle causes issues!
paint.setColor(selectedCenterColor);
canvas.drawCircle(x, y, radius - (radiusBorder * 2), paint);
}
}
如果问题drawCircle()行被注释掉,则渐变显示为我所期望的:
当我在启用drawCircle()的情况下运行时,它显示为:
渐变发生了什么变化?如何通过在其上面绘制其他东西来影响它?新绘制的圆小于渐变并且是一种纯色。我不明白这里会发生什么。