6

我确信这是一个微不足道的问题,但我没有找到答案。

我正在制作一个 Android 应用程序,我想从中打开显示多张图像的图像查看器。我知道如何只用一张图片来做到这一点:

    Intent intent = new Intent();  
    intent.setAction(android.content.Intent.ACTION_VIEW);
    File file1 = new File("/mnt/sdcard/photos/20397a.jpg");
    intent.setDataAndType(Uri.fromFile(file1), "image/jpg");
    startActivity(intent);

这完美地工作。但是如何将多张图像传递给查看器?

谢谢!!L.

4

3 回答 3

1

我想打开图像查看器

Android 中没有“图像查看器”。设备和用户可能有许多不同的应用程序能够查看image/jpeg从本地文件加载的文件。

但是如何将多张图像传递给查看器?

抱歉,没有Intent打开任何类型的多个文件的标准。

另外,请不要/mnt/sdcard/在您的应用程序中进行硬编码。请在Environment类上使用正确的方法来确定外部存储上的目录。

于 2012-06-26T16:52:43.173 回答
1

您需要在数组中列出要查看的所有文件。然后显示其中一个数组,并在拖动时显示下一个图像。

ArrayList list;

private DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // Ansi date format

list = new ArrayList();  
  String path = "c:/temp/";  
  File dir = new File(path);   
  for (String dirListing : dir.list()) {
    if ((dirListing.endsWith(".jpg")) ||
      (dirListing.endsWith(".png")) || 
      (dirListing.endsWith(".gif"))) {
      try { // write all file-info to a arraylist
        File f = new File(path+dirListing);      
        list.add(f.getCanonicalPath()); 
        list.add(f.getName());
        list.add(String.valueOf(f.length()));
        String lastModified = dateFormat.format(new Date(f.lastModified()));
        list.add(lastModified);
      }
      catch (IOException e) {
        e.printStackTrace();
      }
      catch (IndexOutOfBoundsException e) {
        e.printStackTrace();
      }
    }
  }

现在您可以读取数组并一一显示。

于 2012-06-26T16:54:58.077 回答
1

不要使用硬编码路径。

更改此行:

File file1 = new File("/mnt/sdcard/photos/20397a.jpg");

File sdDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);

它将定位到

/storage/emulated/0/Picture

Environment.DIRECTORY_PICTURES如果你想要你的 sdcard 的父目录,你可以删除。

由于您指定的是单个文件20397a.jpg,这就是您无法看到其他图像的原因。

如果您想查看图片以外的其他内容,请将 ' image/jpg' 更改为 ' image/*'

于 2016-08-13T14:09:09.883 回答