본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android] VideoView 를 사용하는 경우 progress hide timing.

by 돼지왕 왕돼지 2015. 12. 10.
반응형

 [android] VideoView 를 사용하는 경우 progress hide timing.


참조 : https://plus.google.com/+ArneStockmans/posts/FFE8PrWiPyq


Android, api level, api level1, CODE, Example, hide, loading, mediaplayer, MEDIA_INFO_VIDEO_RENDERING_START, oninfolistener, prepared, progress, Progress Bar, ProgressBar, rendering, sample, sdk 17, setoninfolistener, setOnPreparedListener, surfaceview, Timing, VideoView, What, [android] VideoView 를 사용하는 경우 progress hide timing., 버전분기, 안드로이드


-
API Level 1 부터 사용할 수 있는 VideoView 라는 녀석이 있다.


-
MediaPlayer 의 내용물을 Rendering 시키는 SurfaceView 를 상속한 녀석이다.


-
SDK 17 부터는 OnInfoListener 를 달아놓으면, 실제 Rendering 이 시작될 때 What 으로 MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START 가 온다.
이 때 progressbar 를 hide 시켜주는 것이 hide 시키는 최적의 타이밍이다.


-
SDK 17 이전에는 setOnPreparedListener 가 호출되었을 때 호출해주는 방법밖에 없었다.
이 때 progressbar 를 hide 시켜주면, 실제 rendering 과의 시간차가 조금 발생한다.
prepared 는 loading 이 끝난 것만을 이야기하기 때문이다.


-
아래와 같이 버전분기해서 사용하면 되겠다.


mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
        if (Build.VERSION.SDK_INT < 17) {
            mProgressBar.setVisibility(View.GONE);
        }
    }
});

if (Build.VERSION.SDK_INT >= 17) {
    mVideoView.setOnInfoListener(new MediaPlayer.OnInfoListener() {
        @Override
        public boolean onInfo(MediaPlayer mp, int what, int extra) {
            if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START) {
                mProgressBar.setVisibility(View.GONE);
            }

            return false;
        }
    });
}






반응형

댓글