【Android Advanced Training-02】レイアウトファイルの表示性能を向上させる[Lesson 3-オンデマンドでビューを読み込む(ViewStubの使い方)]

4314 ワード

Loading Views On Demand[オンデマンドでビューをロード]
いくつかの場合、複雑なビューが必要ですが、あまり使われません.必要なときに再ロードすると、メモリの使用を削減し、ユーザーにスムーズな体験をもたらすことができます.
Define a ViewStub[ViewStubの定義]
ViewStubは軽量級のviewで、空間を占有していないし、drawの資源を費やしていないし、layoutにも参加していない.作成にはわずかなシステムリソースしか必要ありません.また、Viewのレベルに保存することも、リソースを費やさない動作です.各ViewStubには、作成するレイアウトファイルを指定するandroid:layoutのプロパティが簡単に含まれています.
次はProgress barを含むViewStubの例です.これはoverlayにとって透明であり、progress barはインポートが必要な場合にのみ表示されます.
android:id="@+id/stub_import"
android:inflatedId="@+id/panel_import"
android:layout="@layout/progress_overlay"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"/>
Load the ViewStub Layout[ViewStubのレイアウトをロード]
ViewStubで定義するレイアウトをロードしたい場合は、calling setVisibility(View.VISIBLE) or call inflate().
((ViewStub) findViewById(R.id.stub_import)).setVisibility(View.VISIBLE);

// or
View importPanel = ((ViewStub) findViewById(R.id.stub_import)).inflate();
が表示または作成されると、このViewStubコンポーネントはViewレベルから消え、作成されたレイアウトに置き換えられ、このレイアウトのIDはViewStubでandroid:inflatedIdプロパティで定義されます.
(このViewStubのIDを定義する属性andoid:idは表示されるまで有効です).
Note:ViewStubの欠点の1つは、ラベルを含むレイアウトファイルの作成が現在サポートされていないことです.
詳細については、http://developer.android.com/resources/articles/layout-tricks-stubs.htmlを参照してください.
学習:http://developer.android.com/training/improving-layouts/loading-ondemand.html
転載は出典を明記してください:http://blog.csdn.net/kesenhoo、ありがとうございます!