Android Developers:必要に応じてビューをロード

1554 ワード

レイアウトには、使用する複雑なビューが少ない場合があります.プロジェクトの詳細、進捗インジケータ、または処理された情報にかかわらず、必要に応じてロードすることで、メモリ消費を削減し、表示を高速化できます. 
 
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つは、レイアウトでIDがサポートされていないことです.