2014-11-29 3 views
0

Мне нужно быстро менять изображения (в миллисекундах) для моей игры. Я использую ImageViews и setImageResource() для установки изображений в ImageViews. Ниже приведен журнал с продолжительностью действия, которое требуется выполнить.Самый дешевый способ установить изображение для ImageView в Android

  1. 10мс - Pattern4
  2. 10мс - Pattern4
  3. 4ms - Pattern4
  4. 6ms - Pattern4
  5. 172ms - Pattern3
  6. 186ms - pattern1
  7. 174ms - ТЕСТ2
  8. 84ms - Образец1
  9. 45 мс - Пат tern2
  10. 196ms - Pattern3
  11. 9ms - Pattern3
  12. 4ms - ТЕСТ2
  13. 70ms - Pattern1
  14. 0ms - pattern1
  15. 2мс - Pattern3
  16. 40мс - ТЕСТ2

код :

for (int i = 0; i < 9; i++) { 
     buttons[i].setImageResource(current_set[i + 2]); 
     buttons[i].setTag(current_set[i + 2]); 
     buttons[i].requestLayout(); 
    } 

Продолжительность, указанная выше, - это время, затрачиваемое на 16 вызовов методов, которые выполняют одно и то же действие (для установки изображений для 9 ImageViews).

  1. Почему же набор из 9 фотографий в шаблоне занимает совершенно другую продолжительность делать setImageResource() 9 раз (за вызов метода)?

  2. Не могли бы вы предложить другие методы, позволяющие сократить время, затрачиваемое на «setImagResource()»?

спасибо.

+0

Если вы пишете игру, то почему вы используете 'ImageView' в первую очередь? – CommonsWare

+0

Hi CommonsWare, Концепция настолько проста, что взаимодействует с кнопками на экране. А также у меня нет опыта использования openGL или других подобных вещей. Поэтому я решил просто пойти с обычными ImageViews в таблице Layout. И я верю, что если я смогу преодолеть эту проблему продолжительности и сделать изображения, которые будут заменены плавно единообразно, игра будет в порядке, чтобы играть. Спасибо :) –

+0

Вы могли бы сэкономить время, избавившись от вызовов 'requestLayout()'.Кроме того, никто на планете не знает, что такое «Pattern1», что означает время «Pattern1» по сравнению со временем для «Pattern2», что «16 методов звонят» вы говорите, что эти «вызовы 16 методов» «имеют отношение к любому времени, что« одно действие »имеет отношение к любому времени, что означает« 9 изображений в шаблоне », что отличается от« 9 изображений в шаблоне »по сравнению с« setImageResource() 9 раз (за вызов метода) "и т. Д. – CommonsWare

ответ

0

Я думаю, вы можете добавить свои изображения в LevelListDrawable, установите для этой кнопки свои кнопки, затем используйте setLevel(), чтобы установить изображение для кнопки, поэтому не нужно requestLayout().

for (int i = 0; i < 9; i++) { 
     buttons[i].setImageLevel(current_set[i + 2]); // current_set now store image level 
     buttons[i].setTag(current_set[i + 2]); 
     //buttons[i].requestLayout(); 
    } 
Смежные вопросы