ViewFlipper中当前View的名称

时间:2012-01-18 10:10:37

标签: android background 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循环。当动画开始时我想知道将显示什么图像(图像的名称),因为对于某些图像我必须停止翻转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");

                }
            }

但没有任何反应。我没有得到任何消息。我的错误在哪里?或者,怎么做?

1 个答案:

答案 0 :(得分:0)

我选择了几个问题:

视图鳍状肢将以设定的间隔自动循环浏览视图。我不确定你的听众是否会在每次“翻转”时开火,或者只有在你第一次打电话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
}