Stretch video to full screen in a SurfaceView extension
Posted
by SS
on Stack Overflow
See other posts from Stack Overflow
or by SS
Published on 2010-06-11T18:59:08Z
Indexed on
2010/06/11
19:02 UTC
Read the original article
Hit count: 399
android
|android-widget
I have created a widget that is an extension of SurfaceView
(very similar to [VideoView][1]
) and I am working on a feature to stretch the video fully across the device screen when certain action is taken. I've looked at onMeasure
function of VideoView
and re-wrote it this way:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
if (mStretchVideo) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
} else {
int width = getDefaultSize(mVideoWidth, widthMeasureSpec);
int height = getDefaultSize(mVideoHeight, heightMeasureSpec);
if (mVideoWidth > 0 && mVideoHeight > 0) {
if (mVideoWidth * height > width * mVideoHeight) {
height = width * mVideoHeight / mVideoWidth;
} else if (mVideoWidth * height < width * mVideoHeight) {
width = height * mVideoWidth / mVideoHeight;
}
}
setMeasuredDimension(width, height);
}
}
This seems to work fine if I completely stop the video and start playing again. Now I am trying to force the refresh of this SurfaceView
after setting the stretch flag so that the video gets stretched while it is playing, but I couldn't figure out how to force a refresh on SurfaceView
. I tried android.view.View.invalidate()
, android.view.View.refreshDrawableState()
and calling android.view.View.measure(int, int)
directly with different combinations but did not get any success. Any ideas?
© Stack Overflow or respective owner