親 LinearLayout ビューには、数百の子ビューがある場合があります。パフォーマンスを向上させるために、私のソリューションは次のようになります。遅延ロードのように。
LinearLayout
(可能な)数百の子ビューを使用すると、より良いパフォーマンスと矛盾します。あなたが探しているのはListView
、無限のアダプターを備えたものだと思います(簡単なグーグル検索で実装方法が表示されますが、それほど難しいものではありません)。このアダプターは、最後に読み込まれた要素に到達するとすぐに、ビューの読み込みを開始します (新しいコンテンツの読み込み中に読み込み中のビューが表示されます)。
それでも使用したい場合LinearLayout
:
LinearLayout
最初にレイアウトされたときに画面のコンテンツを塗りつぶしたいだけの場合は、メソッドRunnable
内のビューの 1 つに を投稿できます (これが最初に を設定する場所である場合)。その中での高さを見つけ、それを現在存在する子の高さと比較します。組み合わせた子の高さが高さより小さい場合は、ビューを追加して補正します。onCreate
LinearLayout
Runnable
LinearLayout
LinearLayout
LinearLayout
が にあり、ローディング ビューが表示されたときに子を追加する場合ScrollView
は、 のスクロールを監視しScrollView
、ローディング ビューが表示されたときに新しい子を追加します。ローディング ビューがいつ表示されるかを確認するには、現在存在する の子の高さを合わせたものと比較して、ユーザーがどれだけスクロールしたかを確認しますLinearLayout
。
初期対応:
あなたの質問は、あなたが知りたいことに関して少しあいまいです。特定の問題がある場合は、それから始めるべきです。
たとえば、最上位の LinearLayout ビューには 300 の子ビューがあります。ただし、デバイスの画面サイズは 11 の子ビューを 1 回しか表示しません。
このようなシナリオに陥らないようにしてください。ビューの数が多すぎるため、メモリが不足すると、パフォーマンスが低下したり、アプリがクラッシュしたりする可能性があります (これらのビューはすべてメモリに保持されるため)。
Androidは一度に表示できる子ビューの数をどのように計算しますか?
それぞれのView
andViewGroup
には、onMeasure
それ自体とその子を測定するメソッドがあります (利用可能な場合)。LinearLayout
にはメソッドonMeasure
が呼び出され、このメソッドで子を測定し (メジャーを使用method
)、どのくらいの大きさにすべきかについていくつかの提案を与えます ( はLinearLayout
、その親からどのくらいの大きさにすべきかについていくつかの提案を受け取ります)。これがどのように行われるかを確認したい場合は、のソース コードを参照してくださいLinearLayout
。
ビューが描画されることをどのように知っていますか?
あなたが知りたいことがわかりません。画面にビューを描画するために、そのonDraw
メソッドが呼び出されます。