【Android】OnGlobalLayoutListener

Viewの幅や高さが取得できるようになるまで待つ場合、OnGlobalLayoutListenerを使用します。

_listener = new ViewTreeObserver.OnGlobalLayoutListener(){
    @Override
    public void onGlobalLayout() {
        ViewTreeObserver observer = view.getViewTreeObserver();
        if(null != observer){
            if(Build.VERSION.SDK_INT >= 16) {
                observer.removeOnGlobalLayoutListener(_listener);
            }
            else{
                observer.removeGlobalOnLayoutListener(_listener);
            }
        }

        //処理
    }
};

view.getViewTreeObserver().addOnGlobalLayoutListener(_listener);

特にGoogleMap v2でCameraUpdateFactory.newLatLngBoundsを使用する前に 幅や高さが取得できるようになっていないとクラッシュしてしまうため重宝します。