2012-07-25 2 views
0

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

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

Я предполагаю, что это будет какая-то комбинация gridview/listadapter.

Какое будет наилучшее решение этой проблемы?

EDIT

Я смотрел в эти решения http://www.androidhive.info/2012/02/android-gridview-layout-tutorial/ http://developer.android.com/guide/topics/ui/layout/gridview.html#example

но моя путаница код например

private Integer[] mThumbIds = { 
     R.drawable.sample_2, R.drawable.sample_3, 
     R.drawable.sample_4, R.drawable.sample_5, 
     R.drawable.sample_6, R.drawable.sample_7, 
     R.drawable.sample_0, R.drawable.sample_1, 
     R.drawable.sample_2, R.drawable.sample_3, 
     R.drawable.sample_4, R.drawable.sample_5, 
     R.drawable.sample_6, R.drawable.sample_7, 
     R.drawable.sample_0, R.drawable.sample_1, 
     R.drawable.sample_2, R.drawable.sample_3, 
     R.drawable.sample_4, R.drawable.sample_5, 
     R.drawable.sample_6, R.drawable.sample_7 
}; 

Что мне делать с этим, так как количество изображений будет постоянно изменяться в папке моего приложения. И как мне загрузить изображения из этой папки в первую очередь? Haha

ответ

1

Вы видели Caching Bitmaps в Android разработчиках сайта? Я думаю, что он делает что-то похожее на то, что вы хотите. Он также предоставляет код примера.

Вы должны лучше хранить изображения в пути внутри SD-карты, так как они должны динамически меняться. Затем, чтобы получить пути изображения от этого пути, использовать что-то вроде этого (asssuming, что у вас есть только изображения в этом каталоге):

File imagesDir = new File(Environment.getExternalStorageDirectory(), "yourpath"); 
for (File f : yourDir.listFiles()) { 
    if (f.isFile()) 
     String image_path = f.getPath(); 
     // make something with the name 
} 

Кроме того, для загрузки растрового изображения из файла в вашей SD, использовать что-то вроде этого :

Bitmap b = BitmapFactory.decodeFile("your_image_path"); 

Просто имейте в виду загрузить уменьшенную версию растрового изображения для эффективности памяти. См. here для получения дополнительной информации.

Надеюсь, это поможет.

+0

Эй, спасибо за ответ. Я понял, как загрузить растровые изображения в ImageAdapter, и я думаю, что это Кэширование битмапов будет огромной помощью в том, чтобы изображения были доступны между действиями. Я могу потенциально иметь сотни битмапов для загрузки в gridview, безопасно ли кэшировать этот объем данных? – Dan

+0

@ Dan Glad я мог бы помочь :) Я считаю, что кэширование - лучший подход, в вашем случае, поскольку, когда вы придаете кешу определенный размер, вы можете быть уверены, что ваши растровые изображения не будут превышать этот размер, потенциально вызывая «OutOfMemoryErrors» '(при условии, что реализация правильна, конечно). – Angelo

+0

Хорошо, я немного поиграю с ним. Кроме того, что польза от использования ExternalStorage вместо того, как я в настоящее время имею его в/data/app/myapp, я боялся, что у пользователя может не быть SD-карты. – Dan

Смежные вопросы