Получить текущий вид ViewFlipper при переворачивании

Есть ли способ узнать, что вид отображается на ViewFlipper , когда он переворачивается? У меня такая проблема: мой ViewFlipper содержит несколько изображений и одно видео. Я хочу, чтобы, когда viewflipper отображал Videoview с видео, ViewFlipper останавливал переворачивание и видео для начала воспроизведения. Это работает только тогда, когда видео отображается в первый раз. После этого видео отображается как изображение, и я не знаю, как уловить момент, когда видео отображается. Кто-нибудь может мне помочь, пожалуйста?

Вот как я заполняю 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;
        }
    }

и в методе onCreate () у меня есть следующее:

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

(Я вызываю метод populate () только один раз, возможно, это проблема )

Любая идея приветствуется. Заранее спасибо.

7
задан Gabrielle 6 December 2011 в 08:06
поделиться