我正在尝试创建一个图库/ gridview,其中包含来自SDCard上的特定文件夹的图像。该文件夹的路径是已知的(“mnt / sdcard / iWallet / Images”),但在我在网上看到的示例中,我不确定如何或在何处指定图片文件夹的路径,我想从中加载图像。我已阅读了几十个教程,甚至是developer.android.com上的HelloGridView教程,但这些教程并没有教会我的内容。
到目前为止我读过的每个教程都有:
A)从/ res文件夹中将图像称为Drawable,并将它们放入要加载的数组中,而不是使用SDCard。
B)使用MediaStore访问SDCard上的所有图片,但未指定如何设置我想要显示图像的文件夹的路径
或
C)建议使用BitmapFactory,我没有丝毫的线索如何使用。
如果我以错误的方式解决这个问题,请告诉我并指导我采取正确的方法来做我想做的事情。
我的目标android sdk版本1.6 ...
感谢..
答案 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()
为每个文件创建一个位图,然后将位图添加到您的图库。