마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 viewpager + videoview 화면 넘김 사이 검정 화면 질문드립니다.

0 추천
안녕하세요 안드로이드 초보입니다 ㅠㅠ

viewpager와 videoview를 같이 사용해서 하나의 뷰 마다 각기 다른 비디오를 삽입하여

페이지를 넘겨서 각기 다른 비디오 영상들을 볼 수 있게 만들고 있습니다.

수정 전 코드는 onCreateView시 videoView.setOnPreparedListener 리스너에서 바로 영상을 재생시켰더니

현재보이는 A면 페이지 뿐만아니라 그 다음 페이지인 B 페이지를 같이 준비되면서

A페이지에서 A페이지 영상 소리와 B페이지 영상 소리가 동시에 출력됩니다.

따라서 영상이 재생되는 부분을 setUserVisibleHint 를 override 하여서 이 부분에서 영상을 재생시켰습니다.

이 과정에서 또다른 문제점이 생겼는데

페이지를 넘길 때 마다 동영상이 준비가 되는 동안 검정화면이 뜨면서 페이지를 넘겼을때 부드럽지 않고

느리게 느껴지게합니다. 이걸 해결할 수 있는 방법이 있을까요?

 

즉! 페이지를 넘겼을때 현재 보이는 화면의 동영상만 출력하고!

페이지를 넘겼을 시 영상이 아직 준비되지 않아 검정 화면이 보이는 것을 없애는 방법이 있을까요?!
hottsix (120 포인트) 님이 2017년 7월 24일 질문

1개의 답변

0 추천
미디어 플레이어 구조상 Surface에 render가 되어야만 화면이 그려지는데, 스와이프가되면,

MediaPlayer 상태가 idle->prepareAsync->prepared->start -> 첫번째 render까지 되어야 화면이 그려지다보니,

검은 화면이 나올수밖에 없는듯 합니다.

결국은 미리 첫번째 render까지 되어야 해결 될 듯 한데, viewpager를 쓰는 정상적인 방법으론 쉽지 않는 듯 합니다.
 

저희 경우 편법으로 VideoView를 여러개 만들고 위치만 RelativeLayout.LayoutParams 로 위치를 배정

보일 화면만 화면 정위치에 배치하고,
다른 VideoView는 소리를 setVolume으로 0으로 설정해서  화면 밖에서 플레이하다,
 스와이프 시 위치와 소리가 변경되게 하는 방식으로 구현을 해서 해결한 적이 있습니다.

그림으로 그리면 아래와 같은 식입니다.

--------폰화면--------       안보이는데
 1첫번째 VideoView 2번째 VideoView
------------------------

스와이프 시

     안보이는데             -----폰화면------
 1첫번째 VideoView  2번째 VideoView
                                   ------------------
익명사용자 님이 2017년 7월 24일 답변
2017년 7월 24일 수정
정말 감사합니다.. 정말 이해되기 쉽게 설명해주신것 같습니다 소중한 시간내주셔서 댓글달아주셔서 감사합니다!
...