YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Russian subtitles

← 02-07 Visualize_and_Fix_Overdraw_-_Solution

02-07 Visualize_and_Fix_Overdraw_-_Solution

Get Embed Code
13 Languages

Showing Revision 1 created 01/04/2016 by sp8.

  1. У нас должно быть четыре
    ненужных элемента background

  2. в оставшихся файлах.
  3. Давайте разберемся с ними.
  4. Первый — в XML-файле с основными процессами.
    Здесь мы оставляем белый фон намеренно.
  5. Но в XML-файле
  6. с кодом чата мы лишний раз
    объявили белый фон вот здесь.
  7. Это действие излишне, поскольку
    белый фон уже задан в MainActivity.
  8. В этом файле все.
  9. В XML-файле с кодом для
    индивидуальных элементов чата
  10. у нас три ненужных элемента background.
  11. Вот этот нам не нужен.
    Вот этот тоже.
  12. И последний внизу:
    этот белый фон в разметке не нужен.
  13. Так что мы можем их удалить.
  14. Отлично.
  15. Посмотрим, что нам
    удалось сделать с наложениями.
  16. Вот так должен выглядеть ваш экран,
  17. если вы удалили
    все ненужные элементы background.
  18. Аккуратнее, правда?
  19. Хорошая работа.
  20. Мы почти закончили.
  21. Но нам нужно внести
    еще одну поправку.
  22. Обратите внимание на наложение
    в области аватаров.
  23. Здесь сначала отрисовывается
    прямоугольник, а уже поверх него — аватар.
  24. Давайте поступим хитрее.
  25. Пусть фон задаётся только тогда,
    когда аватар не удалось обнаружить.
  26. Это можно сделать
    путем добавления условия.
  27. Хорошо.
  28. Откроем код ChatAdapter,
    который отвечает
  29. за наполнение элементов чата
    при их загрузке.
  30. Перейдем к методу getView.
  31. В самом низу есть логическое выражение,
    которое одновременно
  32. выводит на экран аватар
    и фоновую заливку.
  33. Попробуем сделать его
    чуть более рациональным.
  34. Напишем код, который
    будет задавать цвет фона
  35. только при отсутствии аватара,
  36. а при его наличии
    делать фон прозрачным
  37. и просто загружать аватар.
  38. Это можно реализовать следующим образом.
  39. Вот так выглядит новый код.
  40. Когда аватар отсутствует,
    мы просто загружаем
  41. фон прозрачного цвета туда,
    где должен был находиться аватар,
  42. а затем задаем настоящий
    цвет фона.
  43. При выполнении условия else,
    когда аватар есть в наличии,
  44. происходит обычная загрузка
    этого аватара.
  45. а затем устанавливается
    прозрачный цвет фона.
  46. Так мы минимизируем наложение.
  47. Посмотрим, как эти изменения
    исправили ситуацию.
  48. Отлично.
  49. Как можно заметить,
  50. с обновленным кодом
    наложений стало значительно меньше.
  51. Это была последняя оптимизация.
    На этом здесь всё.
  52. Повторим последовательность шагов.
  53. В самом начале
    наложение было намного заметнее.
  54. Мы установили для атрибута drawable
    значение null.
  55. Затем мы удалили ненужные
    объявления фона
  56. из XML-разметки.
  57. И, наконец, мы ввели условие,
    по которому цвет фона отображается
  58. только при отсутствии аватара.
  59. После этих поправок
    получился вот такой результат.
  60. Здесь значительно
    меньше наложений при отрисовке.
  61. Отличная работа.
  62. И помните: perf помогает!