Имеется большой каталог изображений (порядка 5 тыс штук).
Первый вопрос:
Каким образом работать с ними в Android приложении? Закинуть все их в папку res и обращаться к ним оттуда? Или положить в какой-то каталог на диске? Или в базу данных?
Второй вопрос:
Если они будут лежать в папке res под именами:
pic00001
pic00002
…
pic05000
каким образом программно к ним обращаться?
Я могу написать например:
ivCatalog.setImageResource(R.drawable.pic02700);
но как мне сменить картинку на нужную?
P.S. Я не настоящий программист, пытаюсь заниматься разработкой, чтобы мозги не застаивали.
Как именно предстоит работать с изображениями? Если ложить в папку res, то автоматически будет изображение подстраиваться по экран устройства. Если это какие-то картинки с большим разрешением, то лучше сложить в assets и самостоятельно обрабатывать их. Расскажите подробнее о проекте, тогда решение более подходящее проще подобрать будет.
Имеется каталог товаров, для начала просто хочу сделать возможность их отображения с возможностью фильтров (по типу товаров, по цене, по новизне). Один товар отображается на весь экран с двумя текстовыми полями (описание и цена). Вариант подстройки под экран устройства подходит лучше всего (изображения имеются с высоким разрешением).
5000 изображений в апк — это жестоко. Если они нужны все разом — запакуйте их в архив а при первом запуске апк предлагайте скачать. Далее распаковывайте и пользуйтесь. А вообще все сильно зависит от контента. Возможно лучше сделать подгрузку онлайн.
То есть хранить их на дисковой подсистеме и из приложения обращаться по имени файла? (по сети скорей всего вариант не очень хороший, так как объем трафика будет велик).
Да, хранить да диске и обращаться с помощью Drawable.createFromPath например.
По сети лучше, потому что тогда картинки будут загружаться по запросу, а не лежать мертвым грузом в памяти телефона пользователя. Для уменьшения трафика — делайте preview.
А если это еще и товары, как я увидел выше, то вам потребуется обновлять данные. Поэтому вам в любом случае нужно сделать онлайн отдачу фотографий (если хотите, то с кешированием)
Фотографий, все верно. Но ведь в таком случае приложение для работы будет требовать сеть, то есть например в метро оно будет недоступно, а это основной user-case, дать пользователю повыбивать товары в дороге.
Да res и так отпадает. Там скорее всего потребуются апдейты, а ради даже 100 товаров закачивать 50 метров — очень жирно. Если уж и требуется синхронизация офлайн, то ее нужно делать правильно, чтобы трафика было как можно меньше.
В общем данные нужно хранить вне апк, подтягивать их лучше с сервера и придумать нормальную схему обновления.