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

时间:2014-03-07 06:43:24

标签: android surfaceview shadow hardware-acceleration

我遇到了这个“确切”的问题:

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时,阴影不能正常运行。

1 个答案:

答案 0 :(得分:5)

根据thisSurfaceView根本不是硬件加速,所以你的问题可能就在其他地方。