我遇到了与此问题完全相同的困境:
setShadowLayer Android API differences
我有一个玩家和敌人,正在使用14API进行编译。问题是:从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本身依赖于硬件加速,但当将画布绘制到其中时,阴影无法正常工作。