За последние 10 часов я пытаюсь получить большое (40+) количество изображений (в формате ImageButton) на одном экране Android без ошибок в памяти. Деятельность, над которой я работаю, - это подборщик изображений для приложения для раскраски. Изображения имеют различные размеры в диапазоне (от 500 до 1200) x (от 500 до 1200), PNG (если это имеет значение).40+ ImageButtons на одном экране?
Я попытался:
- Горизонтальная прокрутка Просмотр с изображениями добавляемых из кода. Результат медленный (я делаю это в потоке пользовательского интерфейса) и потребляет большое пространство памяти.
- Горизонтальный вид прокрутки с изображениями, добавленными из кода через AsyncThread. Результат быстрый, но все еще потребляет большое пространство памяти. Мне нравится пользовательский интерфейс этого самого!
- Сетка и вид списка - оба очень изменчивые (тестирование на первом Nexus 7). Использование памяти лучше.
Что я рассматриваю
- View Пейджер - первые результаты выглядят лучше, чем Grid View с точки зрения производительности (я не закончил его в данный момент, чтобы оценить использование памяти, но она должна быть лучше от того, что Я понимаю). Тем не менее, мне не нравится пользовательский интерфейс и предпочитаю прокручиваемый список всех изображений.
- Преобразование моих ресурсов в JPG (будет, что избавиться от байта прозрачности?)
- Уменьшение массы изображения на макс 500x500px
Ни одно из решений не кажется столь же хорошо как приложение Android Photo Gallery доступна на всех устройства. Этот опыт - это то, что я хотел бы отразить. Понятия не имею, как это делается, хотя :(
Два вопроса.
- Что является лучшим способом, чтобы получить такую вещь (40+ Изображения SCROLLABLE на одном экране) сделано? Неужели это действительно ViewPager? ScrollView с AsyncTask и хорошо продуманы разрешение изображения? что-то я еще не пробовал?
- Каков предел памяти я должен попытаться держать ниже? Глядя на Android heap size on different phones/devices and OS versions это, кажется, 256 МБ, что справедливо предположение?
Спасибо У вас отличный выходной!
PS. КСН все работает как шарм, когда я добавить все кнопки в целях прокрутки :(
Рассмотрите возможность использования внешней библиотеки, такой как «Универсальный загрузчик изображений» или «Picasso» (http://square.github.io/picasso/), если вы загружаете их из Интернета. – EpicPandaForce
40 изображений одновременно или нет? Это имеет значение. Было бы здорово, если вы покажете экран своего приложения. – eleven
Почему вы пытаетесь загрузить изображение 500x500 на кнопку? Создайте эскиз более разумного размера (возможно, 50x50) и используйте его. Загрузите полноразмерное изображение, когда оно выбрано. –