Android VideoView: video goes black after being removed from parent view -
i playing rtsp live streaming source using videoview. works fine.
the videoview inside fragment other elements, in 'normal' state, , trying implement fullscreen toggle button.
to go fullscreen mode, removing videoview parent (a linearlayout), , adding linearlayout, added on top of else using getactivity().addcontentview(), here's code:
layoutinflater lf = getactivity().getlayoutinflater(); vfullscreen = lf.inflate(r.layout.full_screen, myviewgroup, false); linearlayout fullscreencont = (linearlayout) vfullscreen.findviewbyid(r.id.fullscreen_container); ((viewgroup) vsplayer.getparent()).removeview(vsplayer); fullscreencont.addview(vsplayer); layoutparams params = new layoutparams(layoutparams.fill_parent, layoutparams.fill_parent); getactivity().addcontentview(vfullscreen, params); the problem video goes black once it's removed original parent view.
what i'm trying achieve it's preserve video instance avoid having reconnect/buffer again, don't know how preserve video playback during switching of parents, ideas?
edit:
if suspend videoview , resume it, this:
layoutinflater lf = getactivity().getlayoutinflater(); vfullscreen = lf.inflate(r.layout.full_screen, myviewgroup, false); linearlayout fullscreencont = (linearlayout) vfullscreen.findviewbyid(r.id.fullscreen_container); vsplayer.getvideoview().suspend(); ((viewgroup) vsplayer.getparent()).removeview(vsplayer); fullscreencont.addview(vsplayer); layoutparams params = new layoutparams(layoutparams.fill_parent, layoutparams.fill_parent); getactivity().addcontentview(vfullscreen, params); vsplayer.getvideoview().resume(); the video play interrupted (goes black few noticeable seconds) resumes, wich lot better, not perfect because takes long resume play.
another not part methods suspend() , resume() of class videoview available api level 8 , up, , need compatible api level 7
is problem videoview you're using goes black , temporarily lingers in between switching of views?
if so, i've been trying figure out cause of issue solid week now. haven't been able figure out actual cause, workaround prevent videoview persisting through screen changes:
public void hidevideoview(){ runonuithread(new runnable() { public void run() { findviewbyid(r.id.yourvideoview).setvisibility(view.invisible); } }); } i'm setting view invisible whenever view gets switched, , if view reloaded set view.visible
Comments
Post a Comment