从SD卡上的特定文件夹加载图像?

时间:2011-12-20 12:01:51

标签: android gridview gallery

我正在尝试创建一个图库/ gridview,其中包含来自SDCard上的特定文件夹的图像。该文件夹的路径是已知的(“mnt / sdcard / iWallet / Images”),但在我在网上看到的示例中,我不确定如何或在何处指定图片文件夹的路径,我想从中加载图像。我已阅读了几十个教程,甚至是developer.android.com上的HelloGridView教程,但这些教程并没有教会我的内容。

到目前为止我读过的每个教程都有:

A)从/ res文件夹中将图像称为Drawable,并将它们放入要加载的数组中,而不是使用SDCard。

B)使用MediaStore访问SDCard上的所有图片,但未指定如何设置我想要显示图像的文件夹的路径

C)建议使用BitmapFactory,我没有丝毫的线索如何使用。

如果我以错误的方式解决这个问题,请告诉我并指导我采取正确的方法来做我想做的事情。

我的目标android sdk版本1.6 ...

感谢..

4 个答案:

答案 0 :(得分:8)

您可以直接从decodeFile (String pathName)创建位图,该位图将为您提供可在ImageView上设置的位图对象

更新:以下是sudo代码,有轻微错误修改它以满足您的需求

File path = new File(Environment.getExternalStorageDirectory(),"iWallet/Images");
if(path.exists())
{
    String[] fileNames = path.list();
}
for(int i = 0; i < fileNames .length; i++)
{
     Bitmap mBitmap = BitmapFactory.decodeFile(path.getPath()+"/"+ fileNames[i]);
     ///Now set this bitmap on imageview
} 

答案 1 :(得分:2)

实际上,提到访问SD卡目录的固定路径是错误的,因为在某些设备中它是 / mnt / sdcard ,而在其他 / sdcard 。< / p>

所以要访问sd-card的根目录,使用getExternalStorageDirectory(),它会为你提供根目录的实际路径。

答案 2 :(得分:1)

此函数将返回您需要传递路径的特定文件夹中的所有文件,直到您的文件夹

public static List getFilesFromDir(File aStartingDir)   
 {  
    List result = new ArrayList();  
       File[] filesAndDirs = aStartingDir.listFiles();  
     List filesDirs = Arrays.asList(filesAndDirs);  
     Iterator filesIter = filesDirs.iterator();  
     File file = null;  
     while ( filesIter.hasNext() ) {  
       file = (File)filesIter.next();  
       result.add(file); //always add, even if directory  
       if (!file.isFile()) {  
         //must be a directory  
         //recursive call!  
         List deeperList = getFileListing(file);  
         result.addAll(deeperList);  
       }  

     }  
     Collections.sort(result);  
     return result;  
   }  

BitmapDrawable d = new BitmapDrawable(getResources(), path+".jpg"); // path is ur resultant //image
img.setImageDrawable(d);

希望对你有所帮助......

答案 3 :(得分:0)

您可以使用File java类访问您的目录,然后遍历其中的所有文件,使用Bitmapfactory.decodeFile()为每个文件创建一个位图,然后将位图添加到您的图库。