从对SD卡的特定文件夹使用一个gridview显示图片 [英] Displaying images from a specific folder on the SDCard using a gridview

查看:128
本文介绍了从对SD卡的特定文件夹使用一个gridview显示图片的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图创建一个装有从驻留在SD卡的特定文件夹的图像一个gridview。该文件夹的路径是已知的,(/ SD卡/图片),但在例子,我在网上看到我不确定如何或在哪里指定路径,我想从载入图像图片文件夹。我已经经历了几十个教程阅读,甚至HelloGridView教程在developer.android.com但这些教程不教我什么,我要求。

I'm attempting to create a gridview that is loaded with images from a specific folder that resides on an SDCard. The path to the folder is known, ("/sdcard/pictures") , but in the examples I've seen online I am unsure how or where to specify the path to the pictures folder I want to load images from. I have read through dozens of tutorials, even the HelloGridView tutorial at developer.android.com but those tutorials do not teach me what i am seeking.

每个教程中,我已经阅读到目前为止有两种:

Every tutorial I have read so far has either:

A)被称为图像从/ res文件夹被拉伸,并把它们放到一个数组加载,不使用SD卡都没有。

A) called the images as a Drawable from the /res folder and put them into an array to be loaded, not using the SDCard at all.

B)访问的所有在使用MediaStore的SD卡照片,但没有指明如何设置的路径,我想显示图像的文件夹形式

B) Accessed all pictures on the SDCard using the MediaStore but not specifying how to set the path to the folder I want to display images form

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

C) Suggested using BitmapFactory, which I haven't the slightest clue how to use.

如果我要对此错误的方式,请告诉我,指点我朝着正确的方法做我想要做的。

If I'm going about this in the wrong way, please let me know and direct me toward the proper method to do what I'm trying to do.

推荐答案

确定,尝试多次迭代之后,我终于有工作的例子,我想我会分享它。我的例子查询图像MediaStore,即可获得缩略图每个图像在一个视图中显示。我加载我的图片到库对象,但不是这个code的工作要求:

OK, after many iterations of trying, I finally have an example that works and I thought I'd share it. My example queries the images MediaStore, then obtains the thumbnail for each image to display in a view. I am loading my images into a Gallery object, but that is not a requirement for this code to work:

请确保你有一个光标和int在类级别定义的列索引,使得画廊的ImageAdapter有权访问它们:

Make sure you have a Cursor and int for the column index defined at the class level so that the Gallery's ImageAdapter has access to them:

private Cursor cursor;
private int columnIndex;

首先,获得光标所在的文件夹中的图像标识的:

First, obtain a cursor of image IDs located in the folder:

Gallery g = (Gallery) findViewById(R.id.gallery);
// request only the image ID to be returned
String[] projection = {MediaStore.Images.Media._ID};
// Create the cursor pointing to the SDCard
cursor = managedQuery( MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
        projection, 
        MediaStore.Images.Media.DATA + " like ? ",
        new String[] {"%myimagesfolder%"},  
        null);
// Get the column index of the image ID
columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID);
g.setAdapter(new ImageAdapter(this));

然后,在ImageAdapter的画廊,获取缩略图显示:

Then, in the ImageAdapter for the Gallery, obtain the thumbnail to display:

public View getView(int position, View convertView, ViewGroup parent) {
    ImageView i = new ImageView(context);
    // Move cursor to current position
    cursor.moveToPosition(position);
    // Get the current value for the requested column
    int imageID = cursor.getInt(columnIndex);
    // obtain the image URI
    Uri uri = Uri.withAppendedPath( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, Integer.toString(imageID) );
    String url = uri.toString();
    // Set the content of the image based on the image URI
    int originalImageId = Integer.parseInt(url.substring(url.lastIndexOf("/") + 1, url.length()));
    Bitmap b = MediaStore.Images.Thumbnails.getThumbnail(getContentResolver(),
                    originalImageId, MediaStore.Images.Thumbnails.MINI_KIND, null);
    i.setImageBitmap(b);
    i.setLayoutParams(new Gallery.LayoutParams(150, 100));
    i.setScaleType(ImageView.ScaleType.FIT_XY);
    i.setBackgroundResource(mGalleryItemBackground);
    return i;
}

我想这code中的最重要部分是,演示如何使用MediaStore查询过滤特定文件夹的图片文件列表中managedQuery。

I guess the most important section of this code is the managedQuery that demonstrates how to use MediaStore queries to filter a list of image files in a specific folder.

这篇关于从对SD卡的特定文件夹使用一个gridview显示图片的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆