2016-11-23 7 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の記入。アイテムをタップすると、ビデオが開始されます。私はsetOnCompletetionListenerのようにVideoView GONEとGridViewを表示させたいですが、ビデオが再生されているときに戻るボタンを押します。

答えて

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 
    } 
} 
関連する問題