2016-11-23 5 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

도움 주셔서 감사합니다. 정확히 내가 코드의이 부분을 어디에 넣어야합니까? 죄송합니다, 안드로이드 개발을 시작하겠습니다. –

+0

'MainActivity'에 넣어야합니다. 그냥'onBack'을 타이핑하기 시작하고'Ctrl + Space'를 사용하십시오 .... 그리고 마법이 일어납니다;) –

+0

당신의 활동 중 어느 곳. –

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 
    } 
}