If you can control your view size, for example as loading an imageview. You observe it then you can get the view size after the image is downloaded. You don't have to worry about when it is drawed and measured.
In Kotlin code:
this.view.let {
it.viewTreeObserver.addOnGlobalLayoutListener {
val height: Int = it.measuredHeight
val width: Int = it.measuredWidth
}
}
In Java code:
ViewTreeObserver observer = view.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// You should remove the listener here because this listener will be trigger many times.
view.getViewTreeObserver().removeGlobalOnLayoutListener(this);
final int w = view.getMeasuredWidth();
final int h = view.getMeasuredHeight();
}
});