C'è un modo per sapere che la vista desiderata è visualizzata su ViewFlipper
mentre sta girando? Ho questo problema: il mio ViewFlipper
contiene alcune immagini e un video. Voglio che quando viewflipper visualizzi Videoview
con video, ViewFlipper
interrompa il flipping e Video inizi a giocare. Funziona solo quando il video viene visualizzato per la prima volta. Successivamente, il video viene visualizzato come un'immagine e non so come cogliere il momento in cui viene visualizzato il video. Qualcuno può aiutarmi, piacere?Ottieni la vista corrente di ViewFlipper mentre è in movimento
Ecco come io popolo ViewFlipper:
private void populate() {
for (int i = 0; i < jArray.length(); i++) {
System.out.println("lungime " + jArray.length());
LinearLayout l = new LinearLayout(this);
l.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
l.setBackgroundColor(0x000000);
l.setOrientation(LinearLayout.VERTICAL);
vf.addView(l);
File f = new File(Environment.getExternalStorageDirectory()
+ "/Images" + "/");
File[] files = f.listFiles();
if (files[i].getName().equals("Video" + idPhotos[i])) {
System.out.println("Video to Viewflipper");
System.out.println("Video Path " + files[i].getPath());
myVideoView = new VideoView(this);
myVideoView.setVideoPath(files[i].getPath());
myVideoView.requestFocus();
myVideoView.setLayoutParams(new LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
l.setBackgroundColor(Color.BLACK);
myVideoView.setKeepScreenOn(true);
myVideoView.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
vf.stopFlipping();
}
});
myVideoView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
downXValue = event.getX();
break;
}
case MotionEvent.ACTION_UP: {
currentX = event.getX();
if (downXValue == currentX) {
Intent intent = new Intent(getBaseContext(),
FinActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
}
}
}
return true;
}
});
myVideoView
.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
vf.startFlipping();
}
});
vf.stopFlipping();
myVideoView.start();
myVideoView.setId(i);
l.addView(myVideoView);
l.setId(i);
}
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 3;
options.inPurgeable = true;
bitmap = BitmapFactory.decodeFile(files[i].getPath());
img = new ImageView(this);
img.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
img.setImageBitmap(bitmap);
img.setOnTouchListener(this);
l.addView(img);
l.setId(i);
img = null;
}
}
e onCreate() metodo che ho questo:
if (ff.exists() && (files.length == jArray.length())) {
populate();
vf.setOutAnimation(AnimationUtils.loadAnimation(
getBaseContext(), R.anim.push_left_out));
vf.setInAnimation(AnimationUtils.loadAnimation(
getBaseContext(), R.anim.push_left_in));
vf.startFlipping();
}
(che io chiamo popolare() metodo solo una volta per volta, forse questo è il problema)
Qualsiasi idea è benvenuta. Grazie in anticipo.
Grazie per l'idea. Mi aiuta a risolvere il mio problema :) – Gabrielle