Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

adaptar o layout para qualquer tela

Olá a todos, desculpe se esse pergunta será respondida em outros módulo de aula mas não foge do escopo da matéria. Eu sei que o "dp" é o valor relativo ao numero de dpi da tela do celular, mas se eu quiser fazer um layout universal ?? Eu não poderia criar-lo com o dp fixo, eu tenho que saber quanto de dpi tem a tela do celular para com um método estático calcular qual vai ser o tamanho da layout ou isso não é necessário ?? Se caso é abordado isso, qual módulo que está?? Grato pela atenção.

5 respostas

Oi Marcelo, tudo bem?

Caso quiser criar um layout universal com medidas fixas, você vai considerar o dp, pois será calculado conforme o dpi, ou seja, você não precisa calcular, apenas precisa setar uma quantidade que apresenta um tamanho esperado na tela com base no dp.

Caso queira ver comparações e mais explicações, é apresentado o conteúdo nos primeiros cursos de fundamentos de Android, em específioco nesta aula.

Agora se a dúvida é sobre adaptação e posicionamento pensando em responsividade, durante o curso será apresentado como é resolvido com ConstraintLayout.

[]s

Olá Alex, de fato é o ultimo item da sua lista, criar layouts responsivos de acordo com a tela do usuário, em alguns vídeos do youtube algumas pessoas criam pastas para cada família de telas que vão da ldpi até a xxhdpi ai eu vim aqui perguntar "Eu vou ter que criar um layout para cada família de resolução, não é possível automatizar usando algum parâmetro de informação que o hardware possa nos passar??" Eu fiz uma calculadora usando constraintLayout e eu tive problemas com o wrap_content, pois eu queria botões menores e quadrados e fiz com dp fix e é só trocar de celular pro layout lambuzar tudo. Ai fiz com LinearLayout com vários LinearLayout por cima e ficou melhor mas nos celulares muito grandes fica uma borda do lado direito que quanto maior o celular, maior a borda. Logo percebo que não é com dp fixo que se faz layouts sérios mas até agora eu fiz o curso do android parte 1 e 2 e o android layout parte 1 e percebo que você usa dp fixo em alguns casos como textos e botões que de fato não muda tanto de celular para celular mas como no meu caso eu quis encher a tela de botões e não fiquei satisfeito com o tamanho padrão deles fiquei nessa. Obrigado por me responder. Suas aulas são bem metódicas e diretas mas fiquei admirado com a velocidade com que você fala, eu assisto na velocidade 1x até de boa mas tem hora que tenho que voltar umas duas vezes porque você me atropela, ainda bem que tem já no player a opção 0.5x para alunos mais lentos. Parabéns Alex, você é incrível.

solução!

Perfeito Marcelo! Ótima dúvida :)

Vamos lá! Se você tem a intenção de criar um layout com apresentação diferente para um tamanho de tela, sim, você vai ter que definir as medidas, pode ser via dpi, como pode ser por tamanho de altura ou largura, um caso muito comum é a criação de um layout para celular e outro para tablet, nesse casos é normal você ver um layout específico para largura de no mínimo 900dp

Fonte para mais informação sobre suporte de múltiplas telas diferentes.

Se o que for mudar, é apenas medidas, como por exemplo, em um celular a altura e largura de um botão precisa ser de 10dp mas num tablet precisa ser de 20dp para aproveitar mais o espaço vazio, você pode usar arquivo de inteiros no resources. Basta apenas você indicar os sufixos para atender as variações (ldpi, hdpi e etc).

Realmente, falar sobre esses assuntos nos primeiros cursos, que tem o objetivo de passar o que é fundamental independente do App, é mais complicado, por isso não entrei com detalhes.

Você tem total razão sobre layouts mais complexos, eles vão exigir mais conhecimento da forma como desenhamos o layout ou até mesmo os componentes visuais que decimos usar para facilitar a implementação. Sendo assim, recomendo que estude o ConstraintLayout, confira a documentação que explica as possibilidades que temos para dar suporte em telas de tamanhos diferentes e pratique bastante.

Eu que agradeço pela sua participação! Essa interação é muito importante para entendermos as necessidades dos alunos e melhorar cada vez mais o conteúdo, portanto, fique à vontade em mandar suas dúvidas :)

Muito obrigado pelo feedback! Realmente é difícil achar o ponto perfeito, tem gente que gosta de velocidade rápida ou lenta então tentamos equilibrar o máximo que conseguimos hehe

A parte boa de vídeo é que é possível tanto ajustar quanto voltar para conferir o conteúdo, mas com certeza ver apenas uma vez e compreender logo de cara é o melhor dos mundos e a gente sempre está trabalhando nisso para entregar cada vez mais qualidades nos nossos cursos :)

[]s

Obrigado por mostrar o caminho Alex, aproveitando que o mestre está aqui tem esse post https://cursos.alura.com.br/forum/topico-programa-fechando-sozinho-87093 que está a dez dias sem resposta e que eu achei o problema e não alterei só para ver se tinha cabra-macho na alura. O que acontece nesse post: Eu estava declarando as variáveis do tipo Button e TextView de forma global junto com variáveis primárias e ai quando eu ia abrir o programa no celular ele fechava sozinho dando o erro de referenciar um objeto nulo e ai quando eu as declarava dentro do método onCreate rodava de boa. Não quer ir lá explicar o porque disso acontecer ai eu ja marco como solucionado esse e o outro?? :)

Acabei de ver a dúvida e você tem toda razão, respondi lá :)

Essa dúvida em específico eu não olhei porque eu fico bastante ocupado nas que entram na categoria dos meus cursos, fora as outras atividades que envolvem criar conteúdo, cursos, posts, alura+ e etc.

Entendo o seu ponto de vista sobre verificar se alguém iria te respondê-lo, mas tente olhar pelo lado de outra pessoa que tivesse passando pelo mesmo problema, caso você deixasse a solução, ela iria conseguir resolver também :)

Claro, essa decisão fica a seu critério, então mantenha a abordagem que preferir ;)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software