Junior — Middle
Qual é a diferença entre usar requestLayout e invalidate durante a atualização da interface?
sobes.tech IA
Resposta da IA
O método requestLayout() é utilizado para informar ao sistema que o tamanho ou a posição da View mudou e que é necessário recalcular o layout. Ao chamar este método, ocorre uma nova passagem de medição e disposição dos elementos (measure/layout).
O método invalidate() sinaliza que o conteúdo da View mudou e precisa ser redesenhado (chamar o método onDraw). No entanto, o layout não é recalculado, apenas a exibição visual é atualizada.
Resumindo:
requestLayout()— recalcula o tamanho e a disposição da View.invalidate()— redesenha a View sem alterar o tamanho.
Exemplo:
view.requestLayout(); // se os parâmetros de tamanho mudaram
view.invalidate(); // se apenas o conteúdo para desenhar mudou