2012-01-18 1 views
0

У меня есть ViewFlipper со многими изображениями. Я добавляю изображения к ViewFlipper следующим образом:Название текущего вида ViewFlipper

bitmap = BitmapFactory.decodeFile(files[i].getPath()); 
img = new ImageView(this); 
img.setImageBitmap(bitmap); 
img.setScaleType(ImageView.ScaleType.FIT_XY); 
vf.addView(img, new LayoutParams(LayoutParams.FILL_PARENT, 
       LayoutParams.FILL_PARENT)); 
img = null; 

в петлю для петли. При запуске анимации я хочу знать, что изображение (имя изображения в) будет отображаться, потому что для некоторых изображений я должен stopflipping в ViewFlipper. Я попытался это:

animFlipInNext.setAnimationListener(new Animation.AnimationListener() { 
      @Override 
      public void onAnimationStart(Animation animation) { 
       System.out.println("AnimStart- LeftIn" + " Will be displayed " 
         + vf.getDisplayedChild()); 
       final File[] imageName = images.listFiles(); //images that I want for viewflipper to stop. 
       for (int i = 0; i < images.length(); i++) { 
        bitmap = BitmapFactory.decodeFile(imageName[i].getPath()); 
        Drawable background = new BitmapDrawable(bitmap); 
        if (vf.getCurrentView().getBackground().equals(background)) { 
         System.out.println("begin " 
           + files[i].getName()); 
        } else 
         System.out.println("NUNUNU"); 

       } 
      } 

, но ничего не происходит. Я не получаю никакого сообщения. Где моя ошибка? Или, как это сделать?

ответ

0

Несколько вопросов я выбрать:

Вид плавник будет автоматически перебирать ваш View-х на заданном интервале. Я не уверен, что ваш слушатель будет стрелять по каждому «флип», или он срабатывает только при первом вызове startFlipping(). Вы можете проверить, называется ли это каждый флип, или только тогда, когда переключение начинается с ввода Log.v() в качестве первой строки и проверки вашего вывода.

У вас также есть логическая ошибка здесь, которая расцепления вас вверх:

vf.getCurrentView().getBackground().equals(background) 

В этой строке кода вы не проверять, если фоновый объект имеет тот же источник, ваш спрашивать, если он точно такой же объект , Что вы знаете, это не потому, что вы только что создали новый объект background в строке раньше.

Однако вы должны быть способны достичь того, чего хотите. Все Views имеют атрибут «Один размер подходит всем», который вы можете использовать по любой причине. Рассмотрим этот код:

bitmap = BitmapFactory.decodeFile(files[i].getPath()); 
img = new ImageView(this); 
img.setImageBitmap(bitmap); 
*img.setTag(files[i].getPath())* 
img.setScaleType(ImageView.ScaleType.FIT_XY); 
vf.addView(img, new LayoutParams(LayoutParams.FILL_PARENT, 
      LayoutParams.FILL_PARENT)); 
img = null; 

Теперь вы можете позвонить:

if (vf.getCurrentView().getTag().toString().equalsIgnoreCase(mPathImLookingFor)) { 
    // Do something 
}