【问题标题】:Trying to replicate glowing circle effect试图复制发光的圆圈效果
【发布时间】:2016-01-18 21:05:39
【问题描述】:

我正在尝试复制这个游戏中圆圈的发光效果:http://hakim.se/experiments/html5/coil/

目前我可以画一个圆:

canvas.drawCircle(Parameters);

但是我不知道如何让圆圈发出柔和的发光效果。

到目前为止,我似乎需要使用油漆的阴影层,但这不起作用。

这是我目前拥有的:

blue = new Paint(); //This is in my view's constructor.
blue.setARGB(255, 51, 153, 255);
blue.setShadowLayer(100,0,0, Color.BLUE);

然后我在 onDraw 方法中有这个:

canvas.drawCircle(300,300,20,blue); 

但是我没有看到任何发光效果。

如何通过使用阴影层或其他方式来实现/模仿这些圆圈的发光效果?

【问题讨论】:

  • 我想您可以使用 alpha 油漆在顶部绘制另一个更大的圆圈,然后为 alpha 设置动画,或者如果您不希望它超出较暗的圆圈,则只需为 alpha 设置动画或显示它/删除一举两得。可能还有其他几种方式。为什么您看不到任何发光效果可能是您的代码的其他问题,而不是您显示的代码 - 您需要做的不止于此,除非您只想使整个圈子本身发生变化,与您链接的内容不同。跨度>

标签: android android-canvas draw glow


【解决方案1】:

只需在初始化绘制的地方添加这行代码即可。

setLayerType(LAYER_TYPE_SOFTWARE, blue);

截图:

【讨论】:

  • 虽然这行得通,但发光非常微弱,我的程序变得非常迟钝(至少在模拟器上)。
  • @Roymunson 在真实设备中,它运行良好且流畅。
  • @Roymunson 如果您想创建游戏,最好使用游戏引擎。
  • @Roymunson 将更亮的颜色传递给setShadowLayer
  • 如何将更亮的颜色传递给 "setShadowLayer" ?参数必须是int,比如Color.BLUE,不能传paint对象。