how to clear surface holder when media player is finished?

后端 未结 5 863
予麋鹿
予麋鹿 2021-01-04 05:50

I made a video player with surfaceview and mediaplayer. i have 10 videos and 10 buttons. if click on each buttons, each videos are playing.

here is my code..

5条回答
  •  攒了一身酷
    2021-01-04 06:35

    Took me two weeks to figure this out. By setting the surfaceholder to TRANSPARENT, Android will destroy the surface. Then setting it back to OPAQUE creates a new surface "clearing" the surface. Note surfacecreate and surfacedestroy events will fire, so if you have code there, beware. I put a imageview set to black to give it a black background. There maybe better ways for that.

    private void playVideoA() { 
         imageViewBlack.bringToFront();
         surfaceHolder.setFormat(PixelFormat.TRANSPARENT);
         surfaceHolder.setFormat(PixelFormat.OPAQUE);
         surfaceView.bringToFront();
         mediaPlayerA.setDisplay(surfaceHolder);
         //surfaceView.setAlpha((float) 0.01);
         mediaPlayerA.start();
    };
    private void prepareVideoA(String url) {
         try {
            mediaPlayerA = new MediaPlayer();
            mediaPlayerA.setDataSource(url);
            mediaPlayerA.prepareAsync();
            mediaPlayerA.setOnPreparedListener(this);
            mediaPlayerA.setOnCompletionListener(this);
            mediaPlayerA.setOnBufferingUpdateListener(this);
            mediaPlayerA.setOnInfoListener(this);
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    };
    @Override
    public void onPrepared(MediaPlayer mp) {
         playVideoA()
    }
    

提交回复
热议问题