Слишком длинная загрузка изображения?

EDIT:

После выполнения трассировки метода всякий раз, когда я переключаюсь с фиолетовым квадратом, график очень сильно возрастает. Когда я переключаюсь с синим или зеленым кругом, он остается низким:

введите описание изображения здесь

Вот методы обмена с фиолетовым квадратом:

введите описание изображения здесь

У меня есть приложение, которое меняет две кнопки. Есть одна красная кнопка, когда ее щелкают, она выбирает случайную кнопку из трех других и свопы.

Я попытался сделать это одним способом, просто поменяв изображения. В onClickListener я только слушал клики с кнопками с красной кнопкой.

  • Получить случайное изображение
  • Сделать пустым
  • Ищите красную кнопку
  • Дайте фон красной кнопки, чтобы случайное изображение (swap)
  • Дайте случайное изображение (которое сейчас пусто) красный фон

Если это путает... оставьте это. Но:

Всякий раз, когда я переключаю изображения с большего изображения на меньшее изображение, процесс занимает гораздо больше времени. Это намного быстрее при обмене между двумя меньшими изображениями. Как это исправить. Есть ли определенный размер изображения, оптимальный для Android?

введите описание изображения здесь

Вот код макета:

https://gist.github.com/anonymous/813883bce89606d2a82e

Как вы можете видеть на изображении, требуется гораздо меньшее (МНОГО!) сокращение времени фоновых изображений с синим кругом, чем пурпурный квадрат. Почему...?



Почему так (когда я просто меняю изображения и проверяю кнопку с красным изображением) медленнее, основываясь на размерах изображения? Какой размер изображения я должен использовать?

Большое спасибо за ваше время

Ответ 1

Мое первое предположение заключалось в том, что у вас есть несколько больших PNG, которые занимают много времени для загрузки.

Но у нас есть хорошие инструменты, которые помогут нам действительно узнать - так что нам не нужно гадать!

Выполняйте трассировку метода (доступную на вкладке ЦП в Android Studio или в представлении DDMS в Eclipse + ADT), и вы должны увидеть, что занимает время.

Ответ 2

У меня нет точного ответа на ваш вопрос, кроме двух рекомендаций:

1) Перед тем, как нарисовать рисунок, сначала сделайте снимок.

2) Использование RelativeLayout заставляет вашу ViewGroup измерять ваших детей дважды вместо одного. Поэтому убедитесь, что вы не выполняете повторную компоновку триггера при событиях click

3) Я бы предположил, что вы помещаете эти представления в GridView или GridLayout, а затем, когда вам нужно поменять свои взгляды, просто поменяйте позиции своего представления в данных (например, Array) и вызовите notifyDataSetChanged(); Надеемся на эту помощь.

Ответ 3

По-видимому, размер изображения может повлиять на скорость. Итак, что я сделал, это изменить размер моего изображения. Я сделал это в фотомагазине, но вы можете сделать это в paint, или вы можете сделать это на веб-сайте image-reizer. Просто выполните поиск в google и введите значения 56 x 56. По какой-то причине эти измерения работают лучше всего.

Вот один инструмент изменения размера изображения:

http://www.picresize.com/

На этом веб-сайте просто выберите свое изображение с вашего компьютера, а затем на следующем экране будет изменен размер: введите описание изображения здесь

Сделать это в paint:

введите описание изображения здесь

Хотя награда закончилась, я только что опубликовал ее, чтобы помочь людям понять, как это сделать. Я НЕ ДОЛЖЕН ЗНАЧИТЬ ПОЧЕМУ ВОПРОСЫ РАЗМЕРА ИЗОБРАЖЕНИЯ. Я был бы очень признателен, если бы кто-нибудь объяснил почему, я должен исправить размер изображения, хотя знаю , как.

Спасибо,

NullPointerException