我有一个应用程序在带有两个窗格的平板设备上运行,左边一个我有一个简单的动画替换片段:
private void loadLeftFragment(Fragment fragment, boolean isAnimated) {
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
if (isAnimated) {
fragmentTransaction.setCustomAnimations(android.R.anim.slide_in_left,
android.R.anim.slide_out_right);
}
fragmentTransaction.addToBackStack(null);
fragmentTransaction.replace(R.id.left_frame, fragment).commit();
}
请注意代码的动画和平。它在Nexus 7上运行得非常流畅,但在Galaxy Tab 2上却没有。所以我在AndroidManifest.xml中尝试了android:hardwareAccelerated="true/false"
标记。我得到的是,当值设置为false
时,Galaxy Tab 2上的动画就像在Nexus 7上一样,即平滑而美观。我没想到这样的行为,假设反之亦然 - 将hardwareAccelerated
值设置为true
会让事情“更顺畅”。但是如果我把它设置为true
我会看到滞后,当false
它很好时,就会发生这种情况!我在这里缺少什么?谢谢。
答案 0 :(得分:11)
这一切都取决于内存使用情况。打开硬件加速时会发生什么, 应用程序的动画和UI渲染发生在GPU上,这会导致系统受到内存使用的影响。为每个进程加载OpenGL驱动程序需要大约2MB的内存使用量,并将其增加到8MB。在RAM有限的设备上,这可能是一个真正的问题。当更多RAM被吃掉时,系统必须关闭更多后台任务以节省内存。
因此必须巧妙地使用此选项,具体取决于目标设备。