我遇到了这个“确切”的问题:
setShadowLayer Android API differences
我有一个玩家和敌人,我正在使用14 API进行编译。问题是:从14 API开始,默认情况下启用硬件加速,并且所有绘图方法都不支持它(例如,setShadowLayer(),我想要使用的那个)。因此,解决方案很简单,就像上面主题中介绍的那样。问题是:他使用了View,我使用SurfaceView来获得更好的游戏性能。我的Surface View声明如下:
public class Screen extends SurfaceView implements Runnable { // Code }
所以,我刚刚添加到构造函数中:
public Screen(Context context) {
super(context);
holder = getHolder();
setLayerType(View.LAYER_TYPE_SOFTWARE, null); // Here.
}
要在我的SurfaceView上禁用硬件加速,以使我的阴影看起来不显眼,结果:整个SurfaceView停止工作。我无法显示发生了什么,但是当我禁用硬件加速时它只是没有绘制任何东西。我对此非常悲观,因为看起来SurfaceView本身依赖于硬件加速,但是当插入Canvas时,阴影不能正常运行。