2016-11-23 3 views
2

Я хочу закрыть VideoView, когда я нажимаю кнопку «Назад» и воспроизводится видео.Закрыть видео в VideoView при нажатии кнопки

Вот мой код:

public class MainActivity extends AppCompatActivity { 

    public Integer[] mVideo = { 
      R.raw.clesella, R.raw.simonino, 
      R.raw.ennio, R.raw.zip, 
      R.raw.pippo, R.raw.monituri 
    }; 

    @Override 
    protected void onCreate(final Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     final GridView gridview = (GridView) findViewById(R.id.gridview); 
     gridview.setAdapter(new VideoAdapter(this)); 

     gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       final VideoView mVideoView2 = (VideoView) findViewById(R.id.video); 
       String uriPath = "android.resource://"+ getPackageName()+"/"+mVideo[position]; 
       Uri uri2 = Uri.parse(uriPath); 
       mVideoView2.setVideoURI(uri2); 
       mVideoView2.requestFocus(); 
       mVideoView2.setVisibility(view.VISIBLE); 
       gridview.setVisibility(view.GONE); 

       mVideoView2.start(); 

       mVideoView2.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 

        @Override 
        public void onCompletion(MediaPlayer mp) { 
         // TODO Auto-generated method stub 

         //write your code after complete video play 
         mVideoView2.setVisibility(View.GONE); 
         gridview.setVisibility(View.VISIBLE); 
        } 
       }); 

       mVideoView2.setOnTouchListener(new View.OnTouchListener() { 
        @Override 
        public boolean onTouch(View v, MotionEvent motionEvent) { 
         if (mVideoView2.isPlaying()) { 
          mVideoView2.pause(); 
         return false; 
         } 
         else { 
          mVideoView2.start(); 
          return false; 
         } 
        } 
       }); 

      } 
     }); 
    } 
} 

Как вы можете видеть, я беру видео из необработанной папки и я заполнить GridView. Когда я нажимаю на элемент, начинается видео. Я хочу сделать VideoView GONE и GridView видимыми, как это было в setOnCompletetionListener, но когда видео воспроизводится, и я нажимаю кнопку «Назад».

ответ

0
@Override 
public void onBackPressed() { 

    if (mVideoView2.isPlaying()) { 
     mVideoView2.setVisibility(View.GONE); 
     gridview.setVisibility(View.VISIBLE); 
    } else { 
     super.onBackPressed(); 
    } 
} 
+0

Спасибо за помощь. Где я должен поставить эту часть кода? Извините за вопрос, я начинаю сейчас с разработки Android. –

+0

Вы должны поместить его в свой «MainActivity». Просто начните вводить 'onBack' и используйте' Ctrl + Space' .... и волшебство случается;) –

+0

Anywhere в вашей деятельности. –

1

сделать свой mVideoView2 и gridview глобального к классу, как показано и плюс не создавать анонимные new MediaPlayer.OnCompletionListener() на каждый клик, просто создать глобальный слушателю и применить его.

class XY extends ..{ 
    GridView gridview; 
    VideoView mVideoView2 


    @Override 
    protected void onCreate(final Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     gridview = (GridView) findViewById(R.id.gridview); 
     gridview.setAdapter(new VideoAdapter(this)); 
     mVideoView2 = (VideoView) findViewById(R.id.video); 
     mVideoView2.setOnCompletionListener(listner); 

     gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      // other code to play and listen 
      } 
    } 

    @Override 
    public void onBackPressed() { 
     if(videoView.isPlaying()){ // check if video is playing then hide views 
      mVideoView2.setVisibility(View.GONE); 
      gridview.setVisibility(View.VISIBLE); 
      }else{ 
       super.onBackPressed(); 
      } 
     } 

     MediaPlayer.OnCompletionListener listner = 
         new new MediaPlayer.OnCompletionListener(){ 
     //... add the code here 
    } 
} 
Смежные вопросы