http://developer.android.com/reference/android/view/View.html#post(java.lang.Runnable)
The runnable does get run on the ui thread.

The problem is that code in onCreate or onResume runs before the layout has been layed out, so vProgressEmpty has zero width. This was one suggestion I found to work around that problem. An alternative would be to register a ViewTreeObserver, but that uses a few more lines of code.
http://stackoverflow.com/questions/6939002/if-i-call-getmeasuredwidth-or-getwidth-for-layout-in-onresume-they-return-0