2012-06-10 8 views
1

My layout.xml состоит из FrameLayout с несколькими текстовыми элементами и кнопками, которые я использую как MediaController, а также содержит SurfaceView. В коде я создаю MediaPlayer и устанавливает SurfaceHolder в SurfaceView как на дисплее, как это:SurfaceView artifacts

surfaceView = (SurfaceView) findViewById(R.id.video_surfaceview); 
surfaceHolder = surfaceView.getHolder(); 
surfaceHolder.addCallback(this); 
mediaPlayer.setDisplay(surfaceHolder); 

Это прекрасно работает для отображения видео, но когда я пытаюсь вызвать:

overLayTextView.setVisibility(View.Gone); 

overLayTextView является все еще видно. Ive попытался восстановить состояние представления overLayTextView, и он настроен на Gone. Я думаю, SurfaceView не обновляет свое состояние рисования до тех пор, пока он не почувствует себя (обычно это происходит через 20 секунд). Итак, мой вопрос в том, есть ли что-нибудь, что я могу вызвать в SurfaceView или SurfaceHolder, чтобы уведомить их о том, что они должны «перерисовать» часть своего контента? (очевидно, не видео).

ответ

0

Я просто понял, нить обновляя оверлеи с видео информации по-прежнему называется:

overLayTextView.setText(mediaPlayer.getDuration()); 

В «NONE-поверхность» раскладок это не имеет значения, так как Посмотреть скрыт, но в SurfaceView это Apparantly не является (по крайней мере, на некоторых устройствах, как ни странно).

Надеюсь, это поможет, ура.