私の Android アプリでは、 を使用して、ViewPager
各ページにアイテムのリストを表示します。リストの各行は で構成されており、それぞれTableLayout
3つと.TableRows
TextViews
ImageView
うまく機能しますが、より多くのページ (したがってリスト) が追加されると、UI は、特に水平方向にページングするときに動きが鈍くなります (垂直方向のリスト スクロール中ははるかに少なくなります)。UIのパフォーマンスを改善する方法を探しています。
階層ビューを使用するViewPager
と、10 ページと各ページに 4 ~ 20 のリスト アイテム (行) がある、そのセクションのみが高いレイアウトおよび描画時間 (つまり、赤いストップ ライト アイコン) を示します。レイアウトはすでに浅いようですが、さらに改善できるのではないでしょうか。
レイアウト構造を理解するための疑似コード:
各リスト行は、次のような構造の TableLayout を使用します。
<TableLayout>
<TableRow>
<TextView/ >
<TextView/ >
<TextView/ >
</TableRow>
<TableRow>
<ImageView/>
<TextView/ >
<TextView/ >
<TextView/ >
</TableRow>
<TableRow>
<TextView/ >
<TextView/ >
<TextView/ >
</TableRow>
<TableRow>
<TextView/ >
<TextView/ >
</TableRow>
<TableRow >
<TextView/ >
<TextView/ >
<TextView/ >
<TextView/ >
</TableRow>
</TableLayout>
メイン アクティビティのレイアウトはサポートを膨らませViewPager
ます。ListFragment
各ページで使用するViewPager
ため、新しいページが作成されると、ListFragment
コードがListView
レイアウトを膨張させ、それがTableLayout
上に示したものを膨張させます。
私が持っている具体的な質問:
- を に置き換えて、
TableLayout
1RelativeLayout
つの深度レイヤーを削除する必要がありますか? 私TextViews
は 5 行で表示し、それぞれに 2 ~ 4 個のフィールドがあり、間隔が異なるため、扱いが難しいと思われます。しかし、たとえそれを達成できたとしても、Hierarchy View が各テーブル レイアウト全体に対して "青信号" アイコンしか表示しないことを考えると、それで何か得られるでしょうか? - を使用して
FragmentPagerAdapter
います。これを使用して最大 10 ページのメモリをメモリに保持するのはおかしいですか? これ(またはそのようなもの)を使用する場合、推奨事項は3〜4ページを超えないことを私は知っています。を試してみましたFragmentStatePagerAdapter
が、ページング中にインターネットから常にデータを取得するために時間/リソース/バッテリーを使いすぎてしまいました。(私は知っています、多分私はそれをキャッシュする必要があります...)。setOffScreenPageLimit
ビューを保持する機能が必要であり、すべてのビューがメモリに保持されるように 10 に設定して遊んでいます。
私はまだAndroidに比較的慣れていないので、アドバイスをいただければ幸いです。