Hi, in Android every surface has an associated SurfaceHolder; you can roughly think of it as a sort of wrapper or manager for a given surface; i.e. instead of handling the surface directly, Android basically lets you play with a "surface" via its "holder".
so, when you call "mediaPlayer.setDisplay ( holder )", you are basically telling the media player what is the target surface on which to display the video, but instead of saying "this is the surface I want to use", you will say "this is the surfaceHolder I want to use";
so we basically use surfaceHolders instead of surfaces, but there's nothing really complicated behind that.
Also, a SurfaceFolder allows you to specify callbacks that can be used to handle events related to the surface creation, surface change or surface destroyed.
Apart from the above, there could be many reasons why your view is not displayed properly;
I would then recommend that you take a look at the Vuforia Video-Playback sample that you can find here:
https://ar.qualcomm.at/content/video-playback-sample-app-posted
In this sample, you can take a look at the class FullscreenPlayback, which also makes use of a VideoView, but in this case arranged inside a FrameLayout (and centered with the gravity layout parameter);
you could then adapt the code to make it appear smaller than the fullscreen size (check the code in onVideoSizeChanged() method).
This should hopefully help you, and in that sample you can implicitly find a lot of best practices on how to play videos with media player and videoview.
What is the Android version this solution works for? I tried it on Android 2.3.x without success. It only works on Android 3.2 and greater...can you confirm it?