2016-09-08 29 views
3

ビュー/レイアウトのパフォーマンスを遅延読み込みに関連する質問があります。 複数のビューを動的に表示/非表示にしたい場合があります。ViewStubとView.GONEとの比較InflateとViewSwitcher

  1. は.xmlファイル内のすべてのレイアウトを含めると(View.GONEとVIEW.VISIBLEのような)setVisibilityメソッドを使用し
  2. ViewStub
  3. を使用して
  4. ViewFlipper/ViewSwitcherを使用する:この場合、我々は4つのオプションを持っています
  5. 新しいレイアウトをプログラムで拡張します。

どちらが最高のパフォーマンスを備えていますか? 私はグーグルで働いていて、ViewStubはそのために特別に設計されていますが、わかりません。たぶん私は間違っていたかもしれないし、多分あなたが知らなかった第五の選択肢があるかもしれません。あなたはこれに関連して異なる意見や経験を持っていますか?ありがとう!

答えて

6

これは、自分自身を膨らますビューによって異なります。あなたが言及したすべての方法には、それ自体のオーバーヘッドがあり、どこで妥協すべきかを決定する必要があります。

  1. ビューが非常に単純で多くを初期化する必要がない場合は、View.GONEに設定してください。それは非常に複雑な場合やレイアウトが良い場合はそうしないでください。
  2. ViewFlipperViewSwitcherは、異なるビュー間でアニメートすることを意図しています。その目的は、単一のビューを表示および非表示にすることではありません。別の時に同じ場所に表示するビューが異なる場合に使用します。
  3. ViewStubは、それ自体をより複雑なレイアウトに置き換える単なるプレースホルダです。
  4. 手動ですべてを行うのは、レイアウト情報を持たずにViewStubを使うのと同じです。プログラムでビューを作成または設定する必要がある場合は、これが良い選択かもしれません。
関連する問題