2

私の Android アプリでは、 を使用して、ViewPager各ページにアイテムのリストを表示します。リストの各行は で構成されており、それぞれTableLayout3つと.TableRowsTextViewsImageView

うまく機能しますが、より多くのページ (したがってリスト) が追加されると、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上に示したものを膨張させます。

私が持っている具体的な質問:

  • を に置き換えて、TableLayout1RelativeLayoutつの深度レイヤーを削除する必要がありますか? 私TextViewsは 5 行で表示し、それぞれに 2 ~ 4 個のフィールドがあり、間隔が異なるため、扱いが難しいと思われます。しかし、たとえそれを達成できたとしても、Hierarchy View が各テーブル レイアウト全体に対して "青信号" アイコンしか表示しないことを考えると、それで何か得られるでしょうか?
  • を使用してFragmentPagerAdapterいます。これを使用して最大 10 ページのメモリをメモリに保持するのはおかしいですか? これ(またはそのようなもの)を使用する場合、推奨事項は3〜4ページを超えないことを私は知っています。を試してみましたFragmentStatePagerAdapterが、ページング中にインターネットから常にデータを取得するために時間/リソース/バッテリーを使いすぎてしまいました。(私は知っています、多分私はそれをキャッシュする必要があります...)。setOffScreenPageLimitビューを保持する機能が必要であり、すべてのビューがメモリに保持されるように 10 に設定して遊んでいます。

私はまだAndroidに比較的慣れていないので、アドバイスをいただければ幸いです。

4

0 に答える 0