从图像文件路径填充Android图库?

时间:2012-01-31 19:39:33

标签: android dynamic path image-gallery

我有一些图像在应用程序启动时保存到Android设备上的目录中 - 我希望能够在图库中显示这些图像,但到目前为止我还没能做到。

我正在关注示例图库代码here,但它使用可绘制资源ID而不是文件路径。我发现this solution与我正在寻找的类似,只不过它使用ImageView而不是Gallery。

所以使用ImageView的代码看起来像这样:

File imgFile = new  File(“/data/data/com.myproject.example/files/someImage.png”);
if(imgFile.exists()){

    Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());

    ImageView myImage = (ImageView) findViewById(R.id.imageviewTest);
    myImage.setImageBitmap(myBitmap);

}

以上代码有效,但我不确定如何使用Gallery。我一直在寻找答案和尝试不同的东西,但我是Android开发的新手,我觉得我有点过头了。

感谢任何帮助。提前谢谢。

2 个答案:

答案 0 :(得分:0)

基本上我认为你只需要将两个例子放在一起。

使用HelloGallery示例作为开头,但是您想更改getView()的{​​{1}}方法中的代码,以便ImageAdapter上的setImageBitmap()而不是ImageView {1}}。

您需要一个要加载的图像文件路径的数组/集合。

答案 1 :(得分:0)

你需要做的是这样的事情:

public ImageAdapter(Context c, int itemId) {
    context = c;

    imgArr = GlobalStore.getItem(itemId).getPhotos();
    TypedArray attr = context.obtainStyledAttributes(R.styleable.HelloGallery);
    mGalleryItemBackground = attr.getResourceId(R.styleable.HelloGallery_android_galleryItemBackground, 0);
    attr.recycle();
}

正如您所看到的,这基本上是Gallery教程的副本。在构造函数 imgArr 变量中加载了一个JPG文件名数组。例如,这些是从数据库中读取的。

然后在getView函数中你有这样的东西......

    public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView = new ImageView(context);


    String tmpStr = appContext.getFilesDir() + File.separator + "photos" + File.separator + imgArr.get(position);
    Bitmap bitmap = BitmapFactory.decodeFile(tmpStr);
    imageView.setImageBitmap(bitmap);
    imageView.setLayoutParams(new Gallery.LayoutParams(350, 300));
    imageView.setScaleType(ImageView.ScaleType.FIT_XY);
    imageView.setBackgroundResource(mGalleryItemBackground);

    return imageView;
}

正如您所看到的,getFilesDir()获取存储文件的应用程序数据位置,然后让我们想象所有照片都在“照片”目录中,您构建路径并附加 imgArr 数组。因为每张照片都会调用它,所以您只需使用传递的位置变量。

如果您没有一系列照片,那么可能就是通过阅读存储照片的目录来构建照片,将所有文件名加载到数组中然后执行此操作。

然后你就像在图库教程中那样在画廊一侧完成剩下的工作。