我是android开发的新手,我对drawables很熟悉。我现在正在尝试访问外部文件夹(从SD卡),并将图像加载到int数组中,这样我就可以使用它们了。然而,在围绕S.O进行了一些研究之后,我仍然找不到可以帮助我的东西。
目前,我正在将图片(*.jpg)从我的可绘制文件夹中放入,并将它们放入如下数组中:
int[] image = { R.drawable.location, R.drawable.diversity, R.drawable.classes, R.drawable.activities, R.drawable.sports, R.drawable.friends,
R.drawable.graduate};
如何将外部文件夹中的图像加载到类似上面的数组中?这里的问题是图像名称。当我从外部文件夹加载图像名称(假设它只包含图像)时,我将如何实际获得图像名称?
任何帮助都将不胜感激。
谢谢。
发布于 2015-09-20 18:48:23
下面的方法将从你的设备返回所有图像的路径,获取这些路径,并使用它们来显示图像
public ArrayList<String> getFilePaths()
{
Uri u = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
String[] projection = {MediaStore.Images.ImageColumns.DATA};
Cursor c = null;
SortedSet<String> dirList = new TreeSet<String>();
ArrayList<String> resultIAV = new ArrayList<String>();
String[] directories = null;
if (u != null)
{
c = managedQuery(u, projection, null, null, null);
}
if ((c != null) && (c.moveToFirst()))
{
do
{
String tempDir = c.getString(0);
tempDir = tempDir.substring(0, tempDir.lastIndexOf("/"));
try{
dirList.add(tempDir);
}
catch(Exception e)
{
}
}
while (c.moveToNext());
directories = new String[dirList.size()];
dirList.toArray(directories);
}
for(int i=0;i<dirList.size();i++)
{
File imageDir = new File(directories[i]);
File[] imageList = imageDir.listFiles();
if(imageList == null)
continue;
for (File imagePath : imageList) {
try {
if(imagePath.isDirectory())
{
imageList = imagePath.listFiles();
}
if ( imagePath.getName().contains(".jpg")|| imagePath.getName().contains(".JPG")
|| imagePath.getName().contains(".jpeg")|| imagePath.getName().contains(".JPEG")
|| imagePath.getName().contains(".png") || imagePath.getName().contains(".PNG")
|| imagePath.getName().contains(".gif") || imagePath.getName().contains(".GIF")
|| imagePath.getName().contains(".bmp") || imagePath.getName().contains(".BMP")
)
{
String path= imagePath.getAbsolutePath();
resultIAV.add(path);
}
}
// }
catch (Exception e) {
e.printStackTrace();
}
}
}
return resultIAV;
}
https://stackoverflow.com/questions/32682940
复制相似问题