2016-11-23 5 views
2
drücke

Ich möchte ein VideoView schließen, wenn ich die Zurück-Taste drücke und das Video abgespielt wird.Schließen Sie das Video in VideoView, wenn ich die Taste

Hier mein Code:

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

      } 
     }); 
    } 
} 

Wie Sie sehen können, nehme ich Videos aus dem rohen Ordner und ich in einem Gridview füllen. Wenn ich auf den Gegenstand tippe, wird das Video gestartet. Ich möchte das VideoView GONE und das GridView wie in setOnCompletiontionListener sichtbar machen, aber wenn das Video abgespielt wird, drücke ich die Zurück-Taste.

Antwort

0
@Override 
public void onBackPressed() { 

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

Danke für die Hilfe. Genau wo muss ich diesen Teil des Codes setzen? Sorry für die Frage, ich fange jetzt mit Android an zu entwickeln. –

+0

Sie sollten es in Ihre 'MainActivity' setzen. Einfach "onBack" eingeben und "Strg + Leertaste" drücken .... und die Magie passiert;) –

+0

Überall in Ihrer Aktivität. –

1

machen Ihre mVideoView2 und gridview Ihre Klasse global wie gezeigt und plus Sie schaffen keine anonymen new MediaPlayer.OnCompletionListener() auf jedem Klick, nur einen globalen Zuhörer erstellen und anwenden.

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