如何在SurfaceView中禁用硬件加速?

Eri*_*ans 5 android shadow surfaceview hardware-acceleration

我有这个"确切"的问题:

setShadowLayer Android API差异

我有一个玩家和敌人,我正在用14 API进行编译.问题是:从14 API开始,默认情况下启用硬件加速,并且所有绘图方法都不支持它(例如,setShadowLayer(),我想要使用的那个).因此,解决方案很简单,就像上面主题中介绍的那样.问题是:他使用View,我使用SurfaceView来获得更好的游戏性能.我的Surface View声明如下:

public class Screen extends SurfaceView implements Runnable { // Code }
Run Code Online (Sandbox Code Playgroud)

所以,我刚刚添加到构造函数中:

public Screen(Context context) {
    super(context);
    holder = getHolder();
    setLayerType(View.LAYER_TYPE_SOFTWARE, null); // Here.
}
Run Code Online (Sandbox Code Playgroud)

要在我的SurfaceView上禁用硬件加速,以使我的阴影看起来不显眼,结果:整个SurfaceView停止工作.我无法显示发生了什么,但是当我禁用硬件加速时它只是没有绘制任何东西.我对此非常悲观,因为看起来SurfaceView本身依赖于硬件加速,但是当插入Canvas时,Canvas不能正常运行阴影.

she*_*lll 5

根据这个,SurfaceView根本不是硬件加速,所以你的问题可能在其他地方.