2012-01-18 10 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; 

をforループに追加します。

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

       } 
      } 

を何も起こりません:アニメーションが開始すると、私は私がこれを試してみましたViewFlipper.をstopflippingしなければならない理由は、いくつかの画像に表示されますどのようなイメージ(画像の名前)を知りたいです。私は何のメッセージも得ていない。私のミスはどこですか?または、これを行う方法?

答えて

0

私が選ぶきた問題のカップル:あなたの閲覧者の設定した間隔で通過ビューフリッパー

をします自動的にサイクル。あなたの聴者が毎回 "フリップ"で放火するか、最初にstartFlipping()に電話をしたときにのみ鳴るかどうかはわかりません。最初の行にLog.v()と入力して出力を確認することで、フリップが1回だけ呼び出されるかどうかをテストできます。

あなたはまた、あなたをトリップされ、ここで論理エラーしている:それはまったく同じオブジェクトである場合、背景オブジェクトは同じソース、あなたの提示を持っている場合

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

は、このコード行では、あなたのチェックしていません。以前は、新しいbackgroundオブジェクトが作成されただけであることがわかっています。

ただし、このようにしたいことを達成できるはずです。すべてのViewsには、 "One size fits all"属性があります。これはあなたが好きな理由で使うことができます。このコードを考えてみましょう:

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