Android:如何将目录中的图像文件导入view.setBackgroundDrawable()

时间:2011-05-03 21:14:22

标签: android

我正在尝试创建一个可以从Android手机上的目录中获取图像的应用程序,并将其显示在布局中。我似乎正朝着一种倒退的方式努力。我知道使用view.setBackgroundDrawable(Drawable.createFromPath(String pathName));来显示图像,但我不知道如何从目录中获取图像的路径。

我对如何做有一个模糊的想法,但希望澄清这个问题。我认为下一步是使用:

String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state) || Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
    File file[] = Environment.getExternalStorageDirectory().listFiles();
}

但是如何过滤文件以便只有图像文件存储在我的file[]中?比如.png或.jpg / .jpeg文件?在那之后,我应该使用files[].getPath还是files[].getAbsolutePath?我会将结果存储在String[]

我主要要求的是验证上述代码是否有效。此外,我如何过滤以仅存储.png.jpg.jpeg等图像文件。

感谢您的时间。

3 个答案:

答案 0 :(得分:7)

你想做这样的事情进行过滤:

File[] file = folder.listFiles(new FilenameFilter() {

                @Override
                public boolean accept(File dir, String filename) {

                    return filename.contains(".png");
                }
            });

如果你想要图像的文件路径,让我们说file[0]的文件,你会这样做:

file[0].getAbsolutePath();

答案 1 :(得分:1)

您想要实施FileFilter并将其传递给listFiles。您可以创建一个仅按指定过滤掉图像文件的文件。

编辑:您想使用getAbsolutePath()作为createFromPath的参数。

答案 2 :(得分:0)

以下代码仅用于获取.Png,.jpg文件并包含floders

private File[] listValidFiles(File file) {
    return file.listFiles(new FilenameFilter() {

        @Override
        public boolean accept(File dir, String filename) {
            File file2 = new File(dir, filename);
            return (filename.contains(".png") || filename.contains(".jpg") || file2
                    .isDirectory())
                    && !file2.isHidden()
                    && !filename.startsWith(".");

        }
    });
}