2012-04-05 17 views
9

ActivityはXMLで作成されています。私はドロウアブルフォルダにある背景画像の背景に設定しました。バックグラウンドを使用した場合のAndroid ViewPagerのパフォーマンスの問題

私はViewPagerを作成して、ビュー間を前後にスワイプできるようにしました。 ViewPager内のすべてのビューには1つのイメージが含まれています。

左または右にスワイプすると、移行が非常に遅くなります。

背景イメージを白(#fff)に設定して、すべてのラグを消してみました。それは完璧に働いた!問題は、アプリケーションの背景が必要だということです。

背景画像などを最適化する手段はありますか?そうすれば、スワイプが再びスムーズに進むでしょうか? 現在は、遅れのために使用するのが面倒です。

また、画像を小さなサイズに切り取り、それを画面全体に伸ばしてみましたが、パフォーマンスの向上は見られませんでした。また、それはViewPagerにあるイメージフォルトではなく、TextViewsでテストしたときに同じラグがありました。

答えて

16

私はいくつかの検索の後に自分自身で考え出しましたが、私はこの問題に遭遇した誰かのために答えを残します。

画像が引き伸ばされると、アンドロイドは背景をレンダリングするのに問題があるようです。少なくとも、Android 3.2を実行しているGalaxy Tab 10.1ではそうです。

私が使用していた背景画像は、それ自体が繰り返している同じ厚板のパターンなので、木製の床の画像でした。私は1440 x 1050から約350x500まで画像を切り抜くことができました。この画像を背景として使用しているときに画面全体に伸びていると、大きなパフォーマンス低下がありました。しかし、左上隅に単一の画像として表示すると、うまくいきました。

hereの方法を使用して、画像を伸ばしずに画面全体で繰り返していました。驚いたことに、私は余分なストレスがないことに気付き、トランジションは非常に滑らかになりました。

だから、これは、これは同じパフォーマンスの問題で他の人を助けることを願っています!

14

今後の解決方法:ドロアブルを適切なフォルダに配置する必要があります。私はdrawableフォルダにbackground.pngを持っていて、それはストリートと闘うため遅れました。私は私の携帯電話でそのようなパターンを持っていないので、繰り返し使用することができませんでした。

しかし、drawable-xhdpiに私の描画可能な背景を置くと、全く遅れずに作業できました。将来の参照のために、これはあなたの問題を解決する可能性もあります。 ViewPager really slow on Samsung S4

+0

これは素晴らしいです、私はMoto Xに問題がありました。drawableをdrawable-xhdpiに対処するだけで問題は解決しました! – marcwjj

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

ありがとう!多くの男、 –

関連する問題