获取SD卡上的位图ID

时间:2012-02-12 21:35:24

标签: android bitmap

我的应用有一个部分,其中一些图像以网格视图显示。

在设置gridview之前,完成以下操作:

  • 从互联网下载图像文件名列表
  • 将此列表与Drawable文件夹中已存在的项目进行比较
  • 如果Drawable文件夹中没有图像,请将其下载并保存到SD卡。

在设置gridview时,我是通过使用drawable ID来实现的,这些ID很容易获取,因为它们位于资源文件夹(“drawable”)中。

但如果我需要在gridview中包含SD卡图像,我该如何检索他们的ID?

2 个答案:

答案 0 :(得分:3)

除应用程序打包的文件以外的任何文件(例如,下载到内部或外部存储)都没有资源ID。

资源ID是引用打包资源(如字符串,图像等)的简便方法。这些ID是在构建时创建的,只对内部资源有意义。

为了使用从外部来源获取的图像,您可以通过文件名访问它们,我猜想,您将创建添加到ImageViews的{​​{1}}。

如果您需要辨别网格的不同图像(可能是出于触摸/点击目的),那么它就是您处理的GridView,而不是关注它们包含的图像的资源ID或文件名。

答案 1 :(得分:2)

我有一个代码从sdcard获取图像并将它们转换为URI数组,id类似于URI,使用它们。

    private void getData() {
    File f = new File("/mnt/sdcard/");  
    File[] imagelist = f.listFiles(new FilenameFilter(){  

    public boolean accept(File dir, String name)  
    {  
        return ((name.endsWith(".jpg"))||(name.endsWith(".png")));
    }  
    });  
    mFiles = new String[imagelist.length];  

    for(int i= 0 ; i< imagelist.length; i++)  
    {  
        mFiles[i] = imagelist[i].getAbsolutePath();  
    }  
    mUrls = new Uri[mFiles.length];  

    for(int i=0; i < mFiles.length; i++)  
    {  
        mUrls[i] = Uri.parse(mFiles[i]);             
    }
}

您可以像这样使用uri: -

    ImageView imageView=new ImageView(this);
    imageView.setImageURI(mUrls[i]);