2012-02-07 11 views
1

各項目が複数のビュー(〜445x250の大きな画像、〜40x40の小さな画像など)を含むカスタムレイアウトであるListViewがあります。スクロールしている間、アニメーションは非常に不安定です。大きい画像を表示するときにListViewのパフォーマンスが悪い

パフォーマンスを向上させる方法をお勧めしますか?

私が試みた1つのアプローチは、使用されている画像の透過性をなくすことでした。新しい商品が表示される前に目立った遅れが残っていたにもかかわらず、少し改善されました。

アップデート: - http://pastie.org/3333903

+0

リストアイテムのレイアウトを投稿します。 –

+0

カスタムアダプタの 'getView()'メソッドで 'convertView'と' ViewHolder'パターンを使いましたか? – Luksprog

+0

@slukian私はconvertViewを使用しますが、ViewHolderパターンは使用しません。私はViewHolderパターンを試しましたが、その改善は知覚できません。ラグの主な原因は、画面の30〜40%を占める大きなサムネイルのレンダリングだと思われます。 – sparkymat

答えて

3

提供レイアウトを見ると、パフォーマンスの問題を引き起こす可能性がいくつかあります:

  • あなたのビュー階層は、あなたが可能な限り浅いとあなたのビュー階層をしなければならない4の深さを有しています。できるだけ入れ子のLinearLayoutの代わりにRelativeLayout/TableLayoutを使用することを検討してください。
  • 重さが入れられています。ネストされた重み付きビューを避けるようにしてください。
  • 行項目のビューのロットがあります。 ListViewの目的を覚えておいてください。 - 行が複雑になり始める場合は、この情報を表示するために他のものを見るためのサインかもしれません。
  • GestureOverlayViewは、ListView行項目で少し重いようです。これは必要ですか?タッチでスクロール可能であると考えると、行アイテムにカスタムジェスチャーを付けるのはちょっと混乱するかもしれません。

android:persistentDrawingCache="scrolling"とViewHolderパターンを使用して、さらにパフォーマンスを向上させることもできます。

最新バージョンのADTをダウンロードした場合は、レイアウトの最適化にも役立ちます。

レイアウトの最適化とは別に、最小限の作業はListAdaptergetViewメソッドで行う必要があります。

さらに、android:hardwareAccelerated="true"を使用すると、Android 3.0以降のハードウェアを利用できます。

+0

ビュー階層(行2-14)のサブツリー全体をノックアウトし、RelativeLayout @ 15の内容を外側に移動すると、かなりの遅れが見られます(間違いなく以前よりはるかに少ない)。これはレイアウトの最適化だけで済むと感じています。 SurfaceViewを使用してカスタム図面を作成するのは理にかなっています。どう思いますか? – sparkymat

+0

ああ、多分、あなたのアダプタで 'getView'であまりにも多くの作業をしていますか? –

+0

getViewを最適化できるかどうかを確認します。 – sparkymat

0

あなたが代わりにリストビューを使用して、動的テーブルレイアウトを使用することができます はここで(各項目の)カスタムレイアウト用の表示階層構造です。パフォーマンスが向上します。ダイナミックなテーブルレイアウトは、大きな画像と小さい画像を調整します。それはあなたに役立つでしょう。

+0

チュートリアルやサンプルコードへのリンクをいくつか用意してください。 – sparkymat

+0

私はダイナミックテーブルレイアウトのコードを持っています。チェックして使用してください –

+0

ダイナミックテーブルレイアウトのコードのリンクを提供できますか? – sparkymat

関連する問題