これは非常に特殊なケースですので、この質問を適切に整理するために最善を尽くします。私は私の目的のために働いているカスタムViewGroup
を持っていますが、初期化はスキップされたフレームを引き起こしています。Androidを使用するViewGroup
私のアプリはFragment
のViewPager
を含んでいます。それぞれの親コンテナはScrollView
です。これらの中で、私は多くの異なったビューを持っています。一つは、(データセットを操作するための)カスタムビューの垂直な行を含むLinearLayout
です。写真で見る「フォアグラウンド、可視、セカンダリアプリのこのレイアウトの
は、私がLinearLayout
を拡張しましたし、それぞれは、XMLからそれぞれの子を膨らませる、実行時に移入されます。
問題なく動作していますが、実行時にこれらの子ビューをすべて膨張させるとフレームがスキップされるという問題があります。私はLayoutInflater.inflate()
への各呼び出しが4-6ミリ秒かかることを見つけるためにメソッドトレースを使用しました。これらのリストのうちの1つ以上を含んでいる私のすべての断片の間では、起動時にフレームをスキップするとかなりの量(40〜50)になります。
膨張する代わりに手動で子ビューを作成すると、少し改善されましたが、十分ではありません。まだ非常に目立つフレームスキップ。
ListView
の場合と同様に、再利用するビューが必要です。
私は1つの解決策を見ますが、それは全く理想的ではないようです。 フラグメントコンテナScrollView
をListView
に置き換え、複数のビュータイプを使用することです。私はこれを見
いくつかの問題が
- それは上記、下記のビュー間の最大5-6異なるビュータイプを必要とする、およびこれらのリストの間にあります。書くのが面倒です。
- 各子ビューには、単純な展開/折りたたみアニメーションで垂直方向にサイズを拡張する機能が必要です。これが
ListView
の行でも可能であるかどうかは不明です。 - これは、アプリ全体のほとんどを書き換えます。私はこれをやりたいが、できるだけ避けたいと思っている。
私はそれを行うには、可能な限りであると思った:、代わりにこれらのリストのためのLinearLayout
を使用しての
ListView
を使用し、その大きさは、すべての項目を表示するように拡張することがあります。それは親の中にネストされますScrollView
。そのサイズがすべてのアイテムに拡大された場合は、ビューを再利用しますか?
この状況で使用できる他のタイプの容器はありますか?私は新しいRecyclerView
をまだ使用していませんが、私が読んだことは本質的にはListView
と同じです。
基本的に私が作成しようとしているのは、ビューをリサイクルするLinearLayout
です。
ご意見をお寄せいただきありがとうございます。この質問がうまく読めない場合は、私にお知らせください。必要に応じて、情報を追加したり、コードを投稿したりすることができます。私がここでやろうとしていることは、ちょっと変わったことであり、本質的に設計上の欠陥があるかもしれない。しかし、私はそれが現在提示されている方法にとても満足しており、このようにしたいと思います。
素晴らしい提案です。私はこれをできるだけお試しください。 –
あなたの状況に役立つ場合は、回答を受け入れたものとしてマークしてください。 – Anonymous
私はまだこのフレームをスキップしています。私は別の考えを持って、ワーカースレッドでこれらのビューを膨らませ、 'onPostExecute'で親にアタッチしました。それは私のデバイス上で完璧に動作します、何かこのようにそれに間違っている? –