13

我有一个在带有两个窗格的平板电脑设备上运行的应用程序,对于左侧,我有一个替换片段的简单动画:

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 上却不是。所以我android:hardwareAccelerated="true/false"在 AndroidManifest.xml 中尝试了标签。我得到的是,当falseGalaxy Tab 2 上的值设置为动画时,例如在 Nexus 7 上,即流畅且美观。假设反之亦然,我没想到会出现这种行为-将hardwareAccelerated值设置为true使事情“更顺畅”。但是如果我将它设置为true我看到滞后,它就会发生,当false它很好时!我在这里缺少什么?谢谢你。

4

1 回答 1

19

那么这一切都取决于内存使用情况。当你打开硬件加速时,应用程序的动画和 UI 渲染发生在 GPU 上,这会导致系统对内存使用造成影响。为每个进程加载 OpenGL 驱动程序需要大约 2MB 的内存使用,并将其提升到 8MB。在 RAM 有限的设备上,这可能是一个真正的问题。当更多的 RAM 被吃掉时,系统必然不得不关闭更多的后台任务以节省内存。

因此,必须根据目标设备巧妙地使用此选项。

于 2013-07-17T07:43:39.780 回答