2012-04-05 41 views
9

我有一個由XML製作的Activity,我已將它的背景設置爲我的可繪製文件夾中的背景圖像。使用背景時的Android ViewPager性能問題

在同一個活動中,我創建了ViewPager以允許在視圖之間來回滑動。 ViewPager中的所有視圖都包含一個圖像。

每當我向左或向右滑動時,轉換非常緩慢。

我試圖通過將背景圖像設置爲白色(#fff)並且所有的滯後都消失了。它工作完美!問題是我確實需要該應用程序的背景。

有沒有什麼辦法來優化背景圖片或什麼東西,所以刷卡將再次順利進行? 目前由於滯後而使用太令人沮喪。

我也嘗試裁剪圖像到一個小尺寸,然後只是在屏幕上拉伸它,但我沒有注意到任何性能改進。此外,它不是位於ViewPager中的圖像錯誤,當我使用TextViews對其進行測試時,它的延遲相同。

回答

16

我在經過一番搜索後發現自己,我會將答案留給任何遇到此問題的人。

顯然android在圖像拉伸時渲染背景很麻煩。至少在運行Android 3.2的Galaxy Tab 10.1上它的確如此。

我使用的背景圖像是一張木地板的圖片,因爲它是一張重複自己的木板圖案,我設法將圖像從1440 x 1050裁剪到350x500。當在整個屏幕上展開時使用此圖像作爲背景時,會出現巨大的性能下降。當在左上角顯示單個圖像時,它工作得很好。

使用描述的方法here我設法在整個屏幕上重複圖像而不是拉伸它。令人驚訝的是,我注意到絕對沒有額外的壓力,過渡非常順利。

所以在這裏,希望這將有助於其他人有相同的性能問題!

14

晚年的另一種解決方案:您必須將繪圖放入適當的文件夾中。我在可拖動的文件夾中放置了我的background.png,它滯後,因爲它與拉伸一起掙扎。我無法使用可重複的功能,因爲我手機上沒有這種圖案。

但是,當我把我的繪製背景放在drawable-xhdpi中時,根本沒有任何延遲。所以爲了將來的參考,它也可能會解決你的問題。引用這個自己解決的問題:ViewPager really slow on Samsung S4

+0

這真棒,我遇到了我的Moto X的問題,只是通過處理drawable-xhdpi解決了問題! – marcwjj 2015-04-25 18:01:59

2

這個技巧在使用尋呼機滑動時幫助我很多。它基於硬件加速。

 viewPager.setOnPageChangeListener(new OnPageChangeListener() { 
       @Override 
       public void onPageScrollStateChanged(int scrollState) { 
        if (scrollState != ViewPager.SCROLL_STATE_IDLE) { 
         final int childCount = viewPager.getChildCount(); 
         for (int i = 0; i < childCount; i++) 
          viewPager.getChildAt(i).setLayerType(View.LAYER_TYPE_NONE, null); 
        } 
       } 

      .... 
}); 

希望它會有所幫助。

+0

謝謝!很多人, – 2016-08-02 17:02:44