Использование стандартной галереи Android в качестве основы для моего собственного приложения - PullRequest
1 голос
/ 09 декабря 2011

Я пытаюсь сделать что-то, что должно быть достаточно легким, но я в очень плохой форме, потому что не могу найти ни одного правильного ответа на этот вопрос.

Есть ли способ получить (или построить) базовую галерею, которую вы найдете на всех устройствах Android. Что-то простое, которое сканирует все изображения на SD-карте и показывает их на экране, скользя влево и вправо ...

Единственное, что я нашел, это HelloGallery; совершенно бесполезный код Google, который будет использовать адаптер на основе файлов r.drawable.xxx ...

Есть ли что-нибудь, что делает то же самое, но на основе URI на основе MediaStore?

Спасибо и извините, если это действительно тупой вопрос.

1 Ответ

0 голосов
/ 09 декабря 2011

Это упрощает сканирование изображений с SDCard, получение всех изображений URI. Вам необходимо создать класс галереи и его класс адаптера. Если вы хотите перемещаться влево и вправо, в классе адаптера возьмите один макет, оба из которых являются родительскими для заполнения, Поместите изображение в центр этого макета Или дайте изображения, чтобы заполнить родительский элемент. Я прокомментировал ниже также работающий случай, проверьте это также ..

public ArrayList<String> getAllImagesUri(ContentResolver mResolver) {
        ArrayList<String> imagesUris = new ArrayList<String>();
        try{

//      Cursor mCursor = mResolver.query(
//              MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
//              new String[] { MediaStore.Images.ImageColumns.DATA,MediaStore.Images.Media._ID }, null, null,
//              null);
        Cursor mCursor = mResolver.query(
                MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                new String[] {MediaStore.Images.Thumbnails.DATA ,MediaStore.Images.Thumbnails._ID }, null, null,
                null);


        startManagingCursor(mCursor);

        if (mCursor.moveToFirst()) {
            do {
                try {
                    imagesUris.add(mCursor.getString(0));
                    imagesIds.add(mCursor.getString(1));
                } catch (Exception e) {
                    e.printStackTrace();
                }
            } while (mCursor.moveToNext());
        }

        }catch (Exception e)
        {

            e.printStackTrace();
            // TODO: handle exception
        }

        return imagesUris;

    }
...