【问题标题】:display mulitple images one after the other in my ImageView在我的 ImageView 中一个接一个地显示多个图像
【发布时间】:2011-11-29 08:35:05
【问题描述】:

目前我的代码显示来自文件路径的单个图像(在 SDCard 中)。现在在 onCreate() 方法中:

 ImageView imgView01 = (ImageView) findViewById(R.id.imageView1);  
 File dir = new File("/sdcard/WallpapersHD/");
 File file[]=dir.listFiles();
 for (int i=0;i<file.length;i++) {
      Drawable d = (Drawable) Drawable.createFromPath(file[i].toString());
      imgView01.setImageDrawable(d);
      }

我想使用 5 秒的时间延迟一个接一个地显示该特定文件夹中的所有图像。如果我可以为文件夹中的每个图像创建一个新的可绘制对象,我该怎么做?以及如何更改ImageView 中的图像以设置该drawable 的路径?

【问题讨论】:

  • 我认为发生的情况是您的代码在循环中非常快速地翻阅所有图像,然后最终显示最后一个。您在更改它们之间需要某种延迟,但您不能在 onCreate 中添加它,因为它会使您的应用程序无响应,您需要在单独的线程中执行此操作。
  • 您所说的正是正在发生的事情。它快速翻阅所有图像,只显示最后一张。那么如何实现延迟呢?

标签: android android-imageview android-file


【解决方案1】:

为方便起见,您可以使用ImageSwitcher,然后执行以下操作:

    imageSwitcher.postDelayed(
            new Runnable() {
                @Override
                public void run() {
                    i++;
                    imageSwitcher.setImageURI(Uri.fromFile(file[i]));
                    imageSwitcher.postDelayed(this, millisBetweenImages);
                }
            },
            millisBetweenImages);

如果您想将图像保留为可绘制对象,它还有一个 setImageDrawable 方法。

【讨论】:

  • 出现此错误:ImageSwitcher 类型中的方法 setImageURI(Uri) 不适用于参数(字符串)
  • 我的错误,它需要一个 Uri 对象作为它的参数,而不是一个字符串,我假设在这种情况下你可以使用 Uri.fromFile()。
  • 谢谢!现在应用程序由于空指针异常而强制关闭:ERROR/AndroidRuntime(11208): at android.widget.ImageSwitcher.setImageURI(ImageSwitcher.java:48)
  • 文件[] 中有一个空条目,或者您没有正确创建 ImageSwitcher。它没有很好的记录,但我很确定它需要两个 ImageViews 作为布局 xml 中的子项。
  • 非常感谢您的帮助!我没有在 imageswitcher 下放置任何 Imageview 子级。现在我只能显示一张图片。它不会自动切换。我的millisBetweenImages = 2000。在我看来,“imageSwitcher.postDelayed(this, 2000);”不工作
【解决方案2】:

为每个图像创建一个可绘制对象,然后在 ImageView 中不断更改图像,可能在 Handler 或 TimerTask 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多