1

FrameLayoutに1LinearLayoutsが含まれているとします.1時間あたり1つしか表示されません。あまりにも多くのレイアウトの可視性をパフォーマンスの問題に変更することがありますか?

LinearLayoutしたがって

<FrameLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <LinearLayout 
     android:id="@+id/alice 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:visibility="visible"> 

     <!-- complex stuff --> 

    </LinearLayout> 

    <!-- many more linear layouts... --> 

    <LinearLayout 
     android:id="@+id/juliett 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:visibility="gone"> 

     <!-- last complex stuff --> 

    </LinearLayout> 

</FrameLayout> 

等、Buttonを含む、複雑な図でEditTextTextView

  1. LinearLayout可視性を変更する、別の項目を示すために、あろう巨大なパフォーマンスの問題?
  2. 問題がある場合、なぜViewFlipperを使用してもアプリのパフォーマンスが低下することはありませんか?

答えて

1

コードが簡単に混乱するので、悪い習慣です。それを無視してパフォーマンスのみに焦点を当てると、可視性をGONEに設定すると、ビューは測定されません(INVISIBLEとは異なります)。しかし、ビューは少しのメモリを占めています。何をしているかによって、ViewGroup.removeView()の使用を検討してください。

ベンチマークなしで言うのは難しいですが、理論的にはのパフォーマンスの問題はありません。

1

これは、別のビューを表示する必要があるたびに別のビューを表示する必要があるため、実装するのには適していません。だから、あなたはそれのためのコードの重複した行を書くつもりです。 Viewswitcherは良い選択です。それではパフォーマンスはどうですか?ビュースイッチャーは、自分自身の内部だけを描画するすべての子ビューを測定します。異種の子ビューを使用するようにディセーブルにしない限り、ディメンションを再計算する必要がないため、このトリックはビューの切り替えを高速化します。

あなたのビューは同質であるため、カスタムビューを実装し、クラスを変更状態にすることをお勧めします。たとえば、Aliceオブジェクトをカスタムビューに設定して、Aliceのプロパティを表示し、ビジネスロジックまでプログラムで変更します。

幸運

エムレ真剣

+0

'onLayout'、' onMeasure'、 'onRequestFocusInDescendants'、' onDraw'メソッドは 'View.VISIBLE'に設定されているビューでのみ呼び出され、' View。失踪した。私は、 'Fragment'や' ViewFlipper'が_cleaner_解決策であることを認識していますが、_performance issue_もあるかどうか質問しています。 –

-1

、あなたは上記の状況のた​​めのフラグメントを検討する必要があります。 不要なビューを膨らませる理由

関連する問題