Android Developers:必要に応じてビューをロード
1554 ワード
レイアウトには、使用する複雑なビューが少ない場合があります.プロジェクトの詳細、進捗インジケータ、または処理された情報にかかわらず、必要に応じてロードすることで、メモリ消費を削減し、表示を高速化できます.
ViewStubの定義
——————————————————————————————————————————————————————————————
viewStubは、サイズがなく、レイアウトに描画されない、または含まれない軽量レベルのビューです.同様に、ビュー構造の追加や削除が容易になります.各ViewStubには、パッケージandroid:layoutプロパティのみが必要で、含まれるレイアウトを指定します.
次のViewStubは、透明な進捗バーに使用されます.新しいプロジェクトがアプリケーションにインポートされている場合にのみ表示されます.
ViewStubレイアウトのロード
——————————————————————————————————————————————————————————————
ViewStubで指定したレイアウトをロードしたい場合は、setVisiblity(View.VISIBLE)またはinflate()のいずれかのメソッドを呼び出して表示します.
注:inflate()メソッドは、塗りつぶしが完了したビューを返します.このレイアウトと対話する必要がある場合はfindViewById()を呼び出す必要はありません.
表示/塗りつぶされると、ViewStub要素はこのビュー構造の一部ではありません.埋め込まれたレイアウトに置き換えられ、このレイアウトのルートビューのIDはViewStubのandroid:inflatedidプロパティによって指定されます.(andorid:idプロパティで指定されたViewStubのIDは、ViewStubレイアウトが表示/埋め込まれる前にのみ有効です.)
注意:ViewStubの欠点の1つは、レイアウトでIDがサポートされていないことです.
ViewStubの定義
——————————————————————————————————————————————————————————————
viewStubは、サイズがなく、レイアウトに描画されない、または含まれない軽量レベルのビューです.同様に、ビュー構造の追加や削除が容易になります.各ViewStubには、パッケージandroid:layoutプロパティのみが必要で、含まれるレイアウトを指定します.
次のViewStubは、透明な進捗バーに使用されます.新しいプロジェクトがアプリケーションにインポートされている場合にのみ表示されます.
<ViewStub
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" />
ViewStubレイアウトのロード
——————————————————————————————————————————————————————————————
ViewStubで指定したレイアウトをロードしたい場合は、setVisiblity(View.VISIBLE)またはinflate()のいずれかのメソッドを呼び出して表示します.
((ViewStub) findViewById(R.id.stub_import)).setVisibility(View.VISIBLE);
// or
View importPanel = ((ViewStub) findViewById(R.id.stub_import)).inflate();
注:inflate()メソッドは、塗りつぶしが完了したビューを返します.このレイアウトと対話する必要がある場合はfindViewById()を呼び出す必要はありません.
表示/塗りつぶされると、ViewStub要素はこのビュー構造の一部ではありません.埋め込まれたレイアウトに置き換えられ、このレイアウトのルートビューのIDはViewStubのandroid:inflatedidプロパティによって指定されます.(andorid:idプロパティで指定されたViewStubのIDは、ViewStubレイアウトが表示/埋め込まれる前にのみ有効です.)
注意:ViewStubの欠点の1つは、レイアウトで