Size: a a a

StartAndroid Ru Chat

2020 September 30

VL

Vladyslav Lozytskyi in StartAndroid Ru Chat
N 2
А дальше что?
Просмотри логи и поймешь что блокирует главный поток. Отрисовка идет в главном потоке из этого следует что в момент анимации кто-то держит главный поток. StrictMode покажет всех кто это делает. Среди блокировок, можно будет увидеть указание на Ваш код, скорее всего
источник

N2

N 2 in StartAndroid Ru Chat
Vladyslav Lozytskyi
Просмотри логи и поймешь что блокирует главный поток. Отрисовка идет в главном потоке из этого следует что в момент анимации кто-то держит главный поток. StrictMode покажет всех кто это делает. Среди блокировок, можно будет увидеть указание на Ваш код, скорее всего
Я весь код выпилил, только инфлейт лейуата с несколько вьюх к тому же у меня нет асинхронного кода
источник

VL

Vladyslav Lozytskyi in StartAndroid Ru Chat
Евгений Гончаров
весь UI готов в onCreate после setContentView
неверно, в этот момент он не отрисован, а только готов к взаимодействию на уровне кода
источник

ЕГ

Евгений Гончаров... in StartAndroid Ru Chat
N 2
Имеено поэтому не onStart не onResume невозможно узнать ширину вьюхи и приходтся постоянно костылится с onLayoutListenerом
вьюхе можно задать Runnable postDelay, он вызовится после того как вьюха отрисуется
источник

N2

N 2 in StartAndroid Ru Chat
Евгений Гончаров
вьюхе можно задать Runnable postDelay, он вызовится после того как вьюха отрисуется
Это скипает кадр вроде как, и это некрасиво выглядит при перезапуске активти/запуске прилы
источник

ЕГ

Евгений Гончаров... in StartAndroid Ru Chat
Vladyslav Lozytskyi
неверно, в этот момент он не отрисован, а только готов к взаимодействию на уровне кода
в этот момент он отрисован, сам логически подумай, сначала вызовится setContentView, это не ассинхронный метод
источник

ЕГ

Евгений Гончаров... in StartAndroid Ru Chat
то есть пока не выполнится setContentView, то есть пока макет не надуется, все что после setContentView не отработает
источник

VL

Vladyslav Lozytskyi in StartAndroid Ru Chat
Евгений Гончаров
в этот момент он отрисован, сам логически подумай, сначала вызовится setContentView, это не ассинхронный метод
спорим, если поставить после setContentView breakpoint, то на экране ничего не будет)?
источник

ЕГ

Евгений Гончаров... in StartAndroid Ru Chat
N 2
Это скипает кадр вроде как, и это некрасиво выглядит при перезапуске активти/запуске прилы
чего? что за ерунду ты говоришь?
источник

ЕГ

Евгений Гончаров... in StartAndroid Ru Chat
Vladyslav Lozytskyi
спорим, если поставить после setContentView breakpoint, то на экране ничего не будет)?
тогда бы приложение падало если бы ты пытался присвоить текст TextView
источник

N2

N 2 in StartAndroid Ru Chat
Евгений Гончаров
чего? что за ерунду ты говоришь?
Ну сделай post'ом например задание размера вьюхи, увидишь что пост вызывается после первого кадра отрисовки
источник

VL

Vladyslav Lozytskyi in StartAndroid Ru Chat
Евгений Гончаров
тогда бы приложение падало если бы ты пытался присвоить текст TextView
присвоить текст != отрисовать на экран
источник

ЕГ

Евгений Гончаров... in StartAndroid Ru Chat
Vladyslav Lozytskyi
присвоить текст != отрисовать на экран
то есть ты хочешь сказать setContentView происходит ассинхронно?
источник

ЕГ

Евгений Гончаров... in StartAndroid Ru Chat
Vladyslav Lozytskyi
присвоить текст != отрисовать на экран
ну да, это логично, вьхи содержат в себе поля которые хранят промежуточные данные
источник

ЕГ

Евгений Гончаров... in StartAndroid Ru Chat
которые отрисуются в onDraw когда тот будет вызван
источник

ЕГ

Евгений Гончаров... in StartAndroid Ru Chat
если мы можем обращать к вьюхам в onCreate после setContentView, это значит что они уже есть на макете
источник

VL

Vladyslav Lozytskyi in StartAndroid Ru Chat
Евгений Гончаров
то есть ты хочешь сказать setContentView происходит ассинхронно?
Вы путаете "отрисовку на экран" с установкой полей и конфигурацией Layout после setContentView. Влада абсолютно права - считать отрисованными вьюхи можно только в onResume, до этого это просто работа с данными разметки
источник

ЕГ

Евгений Гончаров... in StartAndroid Ru Chat
значит onMesure был вызван
источник

ЕГ

Евгений Гончаров... in StartAndroid Ru Chat
после onMesure всегда вызывается onLayout
источник

ЕГ

Евгений Гончаров... in StartAndroid Ru Chat
Vladyslav Lozytskyi
Вы путаете "отрисовку на экран" с установкой полей и конфигурацией Layout после setContentView. Влада абсолютно права - считать отрисованными вьюхи можно только в onResume, до этого это просто работа с данными разметки
ты чет темнишь
источник