第一个问题。我有工作代码可以在文件的其他位置进行此移动——这不是问题。问题是如何创建可以移动的径向渐变(API 16 以下)。
先发制人,我在这里花了很多时间:
http://developer.android.com/reference/android/graphics/drawable/GradientDrawable.html
使用 GradientDrawable(如下),似乎没有办法在不设置非径向方向的情况下设置颜色。
public class CustomView extends View {
int width = (sWidth/8); // sWidth defined elsewhere as width of screen
int height = (sWidth/8);
GradientDrawable gradient;
int[] colors = {0x60ffffff,0x000000};
public CustomView(Context context) {
super(context);
gradient = new GradientDrawable(GradientDrawable.Orientation.BL_TR,colors);
}
protected void onDraw(Canvas canvas) {
if(x != 0 && y != 0){ // OnTouch calls invalidate on this view for movement
gradient.mutate();
gradient.setShape(GradientDrawable.RADIAL_GRADIENT);
// This just makes it disappear:
// setGradientType (GradientDrawable.RADIAL_GRADIENT);
gradient.setBounds(x-width/2, y-height/2, x + width, y + height);
gradient.draw(canvas);
}
}
}
还有这个:
http://developer.android.com/reference/android/graphics/RadialGradient.html
但似乎没有办法移动那个梯度。您可以将径向渐变放在某种可以移动的透明圆圈上吗?我不知所措。提前致谢。