Android_ViewStub


public final class ViewStub extends View
  •  java.lang.Object
  • android.view.View
  • android.view.ViewStub



  • クラスの概要:ViewStubは、実行時にレイアウトリソースファイルのロードを遅らせることができるメモリ領域を占有しないビューオブジェクトです.このレイアウトリソースファイルは、ViewStubが表示されるか、inflate()関数が呼び出されるとロードされます.この
    ViewStubは、ビューをロードするときに親コンテナに置き換えます.したがって、setVisibility(int)またはinflate()が呼び出されるまで、Viewはビューに存在します.ViewStubのレイアウトパラメータは、ロードされたビューとともに表示されます.
    同じ数がViewStub親コンテナに追加されます.
    同様に、inflatedIdプロパティを使用して、ロードするビューオブジェクトのId値を定義または名前変更することもできます.
    例:
        <ViewStub
            android:id="@+id/stub"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:inflatedId="@+id/subTree"
            android:layout="@layout/mySubTree" />

    「stud」idで定義されたViewStubオブジェクトを見つけることができます.レイアウトリソースファイル「mySubTree」をロードすると、ViewStubオブジェクトが親コンテナから削除されます.id「subTree」では、レイアウトリソース「mySubTree」によって作成されたViewを見つけることができます.このビューオブジェクトは、最後に幅100 dip、高さ100 dipとして指定されます.レイアウトリソースファイルのロードの推奨方法は次のとおりです.
    ViewStub stub = findViewById(R.id.stub);
    View inflated = stub.inflate();

    inflate()が呼び出されると、このViewStubはロードされたビューに置き換えられ、このビューオブジェクトに戻ります.これにより、アプリケーションはfindViewById()を追加してロードビューの参照を取得する必要がなくなります.
    このクラスは、XMLファイルで指定されたレイアウトリソースファイルとViewStubクラスを関連付けて、レイアウトリソースファイルを使用する必要があるときにロードすることを意味します.主な役割はパフォーマンスの最適化であり、いついついつロードするか、起動開始時に一度にロードする必要がなく、プログラムの起動速度を速めることができ、メモリリソースを節約することができます.
    ネストされたクラス
    インターフェイスOnInflateListener 
    ViewStubがレイアウトリソースファイルを正常にロードしたという通知を受信するリスナー.
    XML属性
    属性名
    関連メソッド
    説明
    android:inflatedId    
     setInflatedId(int) 
    ロードするビューのid値を上書きします.
    android:layout 
    setLayoutResource(int)    
    参照するレイアウトリソースファイルid
    コンストラクション関数ViewStub(Context context,int layoutResource)
    指定したレイアウトリソースファイルに関連付けられたViewStubオブジェクトを作成します.
    パラメータlayoutResourceがロードするレイアウトリソースファイルのid値.
    パブリックメソッド
    public void draw (Canvas canvas)
    パラメータcanvasこのキャンバスは、レンダリングされたビューオブジェクトに渡されます.
    このビュー(およびすべてのサブビュー)を手動で指定したキャンバスに描画します.このビューは、この関数を呼び出す前に全体的なレイアウトを作成する必要があります.
    自分でビューを実現する場合は、この方法を再ロードしないでください.逆に、onDraw(Canvas)メソッドを再ロードする必要があります.
    主にカスタマイズされたビューコンポーネントに使用する方法
    public int getInflatedId ()
    ロードされたレイアウトリソースファイルのIDを返し、ロードされたレイアウトリソースファイルのidがNO_である場合IDは、このロードされたViewが元のid値を保持します.
    関連XML属性:android:inflatedId
    戻り値:ロードするビューまたはNO_を識別する正の整数IDはロードビューの元のidを保持します.
    setInflatedId(int)を参照
    public int getLayoutResource ()
    ロードされたレイアウトリソースファイルのid値を返します.
    関連XML属性:android:layout
    戻り値:ビューオブジェクトにロードされたレイアウトリソースファイルid値.
    参照
  • setLayoutResource(int)
  • setVisibility(int)
  • inflate()

  • public View inflate()getLayoutResource()メソッドで識別されるレイアウトリソースをロードし、
    親コンテナの代わりにレイアウトリソースをロードします.
    戻り値:このロードされたレイアウトリソースファイル. 
    public void setInflatedId (int inflatedId)
    パラメータinflatedId:このロードビューまたはNO_を識別する正の整数IDはロードビューの元のidを保持します.
    ロードビューのIDを設定します.もしこのidがNO_だったらID、このロードビューは元のidを保持します.
    関連XML属性:android:inflatedId
    getInflatedId()を参照
    public void setLayoutResource (int layoutResource)
    パラメータlayoutResource:有効なレイアウトリソースファイルid値(0以下).
    ロードするレイアウトリソースファイルを設定し、ViewStubがvisibleまたはinvisibleに設定されている場合、またはinflate()が呼び出されている場合に使用します.レイアウトリソースファイルをロードするときに作成されるビュー
    親コンテナに自分自身を置き換えます.
    関連XML属性:android:layout
    参照
  • getLayoutResource()
  • setVisibility(int)
  • inflate()

  • public void setOnInflateListener(ViewStub.OnInflateListener inflateListener)パラメータinflateListener:このOnInflateListenerは、正常にロードされた後にイベント通知を取得します.
    レイアウトリソースファイルのロードに成功した後のイベント通知のリスナーを設定します.
    ViewStubを参照してください.OnInflateListener
    public void setVisibility (int visibility)
    パラメータvisibilityがVISIBLE(表示)、INVISIBLE(非表示)、またはGONE(完全非表示、レイアウト位置を一時的に使用しない)に設定されている場合、可視性がVISIBLEまたはINVISIBLEに設定されている場合、inflate()が呼び出され、ビューリソースが親コンテナにロードされます.
    ViewStubを置き換えます.
    inflate()を参照
    保護されたメソッド
    protected void dispatchDraw (Canvas canvas)
    この関数を呼び出して、このコントロールのサブビューを描画します.派生クラスを書き換えることで、サブクラスを描画する前に制御を取得できます(ただし、自分のビューが描画された後)
    パラメータcanvasこのキャンバスは、レンダリングされたビューオブジェクトに渡されます.
    protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)
    パラメータ
  • widthMeasureSpec親に横方向のスペース要件があるため、View.MeasureSpec.
  • heightMeasureSpec親には縦空間の要件があるため、View.MeasureSpec.

  • このビューを測定して、コンテンツの高さと幅を決定します.この方法はmeasure(int,int)によって呼び出され,コンテンツ測定の効率と精度を向上させるためにサブクラスによって書き換えるべきである.
    約束:このメソッドが書き換えられた場合、setMeasuredDimension(int,int)を呼び出して、測定されたビューの高さと幅を格納する必要があります.それ以外の場合は、IllegalStateException例外がmeasure(int,int)によって放出されます.
    親クラスのonMeasure(int,int)メソッドを呼び出すのは有効な方法です.親クラスのインプリメンテーションは、MeasureSpec(測定細則)がより大きなバックグラウンドを許可しない限り、バックグラウンドサイズをデフォルトサイズとします.測定内容のサブクラスをより良くするためにはonMeasure(int,int)を書き換えるべきである.
    この方法が書き換えられた場合、サブクラスは、その高さと幅が少なくともビューの最小幅と高さであることを確認する責任がある(getSuggestedMinimumHeight()およびgetSuggestedMinimumWidth()