13

2 つのペインを備えたタブレット デバイスでアプリケーションを実行しています。左側のペインには、フラグメントの置換に関する簡単なアニメーションがあります。

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 に答える