2012-01-09 1 views
3

私はネイティブのAndroid 4.0アプリケーションに、私が作成したアプリは、特にListViewの速度をスクロールし、パフォーマンスを比較しています - 私は気づいたネイティブAndroid 4.0アプリケーションのスクロールリストビューは非常に速いですか?

ことの一つはListViewのスクロールフレームレートであるなど、GmailやGtalkなどネイティブAndroidアプリでは、ほぼ60fpsという非常に高いです。私のアプリでは、ListViewはほとんど速くスクロールしません。私は(私はありませんどの - 私はここに述べたすべてのものに続くきた:http://www.youtube.com/watch?v=wDBM6wVEO70)を誤っListViewを使用していると仮定すると、

、私はそれが行(はいだとちょうどダースほとんど空LinearLayoutビューを返すダミーListViewを作成することにしました私は正しくconvertViewを使用しています)。 GmailやGtalkなど、連絡先など

サイドノート、シンプルScrollViewとしては本当に良いスクロール性能を持っていますが、それはお勧めできません - どのようなここに乱すのは、私はほとんど空白ListViewは、ネイティブアプリケーションのいずれかより遅いスクロール性能を有していることです大きなリストにはScrollViewを使用します。

明らかに、ネイティブアプリは私が理解していない何かをしている(または何かにアクセスしている)ことは明らかです。残念ながら、これらのネイティブアプリはオープンソースではありません。どのようにこれらのネイティブのアプリケーションは、このような驚異的なパフォーマンスを達成するための任意の洞察力を持っていますか?

答えて

0

ListViewを速くするいくつかのテクニックがあります。キャッシングして、欠落したリストアイテムを新しいリストアイテムとして使用して、長い操作の作成を回避します。これらの技法を実現するには、ListViewに基づいて独自のクラスを作成する必要があります。続きを読むhere

+0

キャッシュの再生回数は、このビデオでは絶対に推奨されません。http://www.youtube.com/watch?v=wDBM6wVEO70 –

0

また、私のリストビューを構築するためにそのビデオに続きました。私のアプリでは、多くの項目(行)がありません。しかし、私はビデオが言ったようにちょうどすれば、少なくとも理論的には正しい方向に進んでいると思いますか?

+0

私は理論的には、ビデオに従っている限り、正しい方向に進むことに同意します。しかし、ネイティブアプリとの結果を比較することは、別の方法で証明されます –

1

ネイティブ電子メールアプリケーションのソースコードを見てから、メッセージ一覧のリスト項目はLinearLayoutのようなViewGroupではなく、単一のビューであることがわかりました。これは、非常に平坦なView階層を作り、リストをスクロールしながらフレームレートを向上させます。 Gmailチームがパフォーマンスを向上させるために同様のことをしたと言われているRomain Guy(AndroidのUIエンジニアの一人である)による話のビデオを見て覚えていると思います。 これを自分で実現するには、Viewをサブクラス化し、onDraw()メソッドでView内のすべてを描画する必要があります。

Hereは、現在の電子メールアプリケーションのメッセージリスト項目のソースです。

ビューを膨らませる(ただし添付しない)クールなトリックですが、ビューグループに基づいてアイテムがどこにあるかの座標を取得し、マップ内の座標をキャッシュするので、ビューそのビューを再び膨らませる必要がないリストにリサイクルされます。将来の私のプロジェクトでこれを試してみるかもしれません!

こちらがお役に立てば幸いです。

関連する問題