如何在setContentView 后手动启用android 硬件加速?

How to manually enable android hardware acceleration after setContentView?

在我的SplashActivity中,有时会显示图片视图,有时会显示gif。我用android-gif-drawable来播放gif。但是我发现,如果我不设置activity <activity android:hardwareAccelerated="true" />,gif会以正常速率播放。只有我启用 hardwareAccelerated,它才能正常播放。但是,我设置<activity android:hardwareAccelerated="true" />后,我用adb shell dumpsys com.yanzi.demo发现,GL耗费了大约20M内存。所以,我必须使用 java 来启用硬件加速,只有在播放 gif 时才可以。

我使用下一个代码来启用它:

getWindow().setFlags(
    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

写在setContentView之前,效果很好。但是,我检查是否播放 gif 需要时间,因此必须在 setContentView 之后启用它。我测试了一下,发现不起作用。有人可以帮助我吗?或者,这是一个没办法的问题? Api guides

如果您在 setContentView 之后以这种方式启用硬件加速,则必须使用 WindowManager 添加视图。否则,它根本行不通。希望能帮到你。