【问题标题】:load Image from specific folder on the sdcard?从 sdcard 上的特定文件夹加载图像?
【发布时间】:2011-12-20 12:01:50
【问题描述】:

我正在尝试创建一个画廊/网格视图,其中加载了来自位于 SDCard 上的特定文件夹中的图像。该文件夹的路径是已知的, ("mnt/sdcard/iWallet/Images") ,但在我在网上看到的示例中,我不确定如何或在何处指定要从中加载图像的图片文件夹的路径。我已经阅读了几十个教程,甚至是 developer.android.com 上的 HelloGridView 教程,但这些教程并没有教我我在寻找什么。

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

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

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

或

C) 建议使用 BitmapFactory,我一点也不知道如何使用。

如果我以错误的方式处理此问题,请告诉我并指导我采用正确的方法来做我想做的事情。

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

谢谢..

【问题讨论】:

标签: android gridview gallery


【解决方案1】:

您可以直接从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
} 

【讨论】:

    【解决方案2】:

    其实你说的SD卡目录的固定路径是错误的,因为在某些设备中是/mnt/sdcard,而在其他设备中是/sdcard。

    所以要访问sd卡的根目录,使用getExternalStorageDirectory(),它会给你根目录的实际路径。

    【讨论】:

      【解决方案3】:

      此功能将返回您需要将路径传递到您的文件夹的特定文件夹中的所有文件

      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);
      

      希望对你有帮助...

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2013-09-28
          • 1970-01-01
          • 2023-03-11
          • 2011-06-29
          • 2016-11-10
          • 2019-12-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多