2013-07-17 47 views
6

我對平板電腦設備上運行有兩個窗格的應用程序,左一個我對更換片段的簡單的動畫:爲什麼將硬件加速設置爲false會使事情變得更快?

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它只是很好!我在這裏錯過了什麼?謝謝。

回答

7

那麼這一切都取決於內存使用情況。當您打開硬件加速時會發生什麼, 應用程序的動畫和用戶界面渲染髮生在GPU上,並導致系統對內存使用量造成打擊。加載每個進程的OpenGL驅動程序需要大約2MB的內存使用量,並將其提升到8MB。在RAM有限的設備上,這可能是一個真正的問題。當更多的內存被吃掉時,系統必須關閉更多的後臺任務來節省內存。

因此,此選項必須巧妙地使用並取決於目標設備。

+0

但如何構造依賴關係?你在不同的真實設備上有一些工作的例子嗎? – djdance

相關問題