Ok, I just understood the function wrong - maybe because I'm coming from the Microsoft .NET C# world where you can easily transform coordinates from control to screen and vice versa. Anyway, the view.getLocationOnScreen is just returning the transformed upper-left corner of the view. So you have to use it as an offset.
public static void getLocationOnScreen(View view, final Rect src, Rect dst) {
if (view == null || src == null)
return;
if (dst == null)
dst = new Rect();
int[] location = new int[2];
view.getLocationOnScreen(location);
int offsetX = location[0];
int offsetY = location[1];
dst.set(src.left + offsetX, src.top + offsetY, src.right + offsetX,
src.bottom + offsetY);
}