我正在尝试创建一个可以从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
等图像文件。
感谢您的时间。
答案 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(".");
}
});
}