如何在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
添加视图。否则,它根本行不通。希望能帮到你。
在我的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
添加视图。否则,它根本行不通。希望能帮到你。