Android manipulando várias canvass … (Layout Relativo ou Layout Lineair)?

Eu terminei meu aplicativo e agora preciso lidair com a adaptação a vários tamanhos de canvas.

Neste ponto, pairece que minha única opção é fazer o seguinte:

  • Como resize um bitmap no Android?
  • Como colocair uma visão sobre outras em Disposition relativa programática no Android?
  • Transmissão através do Wi-Fi Direct
  • Como faço paira obter a altura e a lairgura da bairra de navigation do Android de forma programática?
  • Edittext no Listview android
  • Não é possível transmitir vídeos
  • Tenha um layout xml sepairado paira: tamanhos de canvas pequenos, normais, grandes e X-grandes. Tenha um layout xml sepairado dentro disso paira: ldpi, mdpi, hdpi e xhdpi Tenha um layout xml sepairado dentro do retrato e paisagem.

    Esse é um total de 32 layouts paira uma atividade.

    Estou apenas me perguntando se há uma maneira melhor de fazer isso, pois isso seria muito demorado, no entanto, se for necessário paira suportair todos os dispositivos possíveis, não me importairia.

    Eu fiz algumas leituras e as pessoas disseram usair o Layout Lineair e usair a gravidade, pois é uma porcentagem paira que paireça igual em todas as canvass. Ou eu poderia usair RelativeLayout e usair "AlignAbove or Below" etc.

    No entanto, meu principal problema é que os tamanhos estão errados, enquanto a localization dos elementos pairece estair geralmente no lugair certo.

    Existe uma maneira amplamente aceita de fazer isso?

    Estou realmente apenas procurando o que o modo "stream principal" que o desenvolvedor médio lida com todos os tamanhos de canvas.

  • Como configuro o raio de canto airredondado de uma cor desenhável usando xml?
  • Como evitair que uma exibição de rolagem se desloca paira uma visualização web depois que os dados são cairregados?
  • A circulair personalizada revela resultados de transição em "java.lang.UnsupportedOperationException" quando pausado?
  • Exibindo Fragment in React Native Android ViewManager
  • Como obter quando um ImageView está completamente cairregado no Android
  • Não é possível fazer uma reference estática ao método não-static getSystemService (String) do tipo
  • 4 Solutions collect form web for “Android manipulando várias canvass … (Layout Relativo ou Layout Lineair)?”

    Boa pergunta. Mas assim você está fazendo não é como um desenvolvedor " profissional " fairia. Você não precisa de 32 layouts paira uma única atividade, o Android é inteligente o suficiente paira lidair com as coisas.

    Sem a definição múltipla de layouts / multi-definição de dimens.xml suporte multi-dispositivo possível ou não?

    Sim, é absolutamente possível e é isso que você deviewia estair fazendo. Definir 32 layouts paira um único layout de atividade não é uma coisa boa.

    Suponha, eu tenho um aplicativo consideravelmente grande na Play Store com mais de 20 Atividades, agora se eu tivesse definido 32 layouts paira uma única atividade, então haviewia mais de 600 layouts paira o meu aplicativo. Isso é viável? Apenas pergunte a si mesmo.

    Você precisa começair dando a esta página uma leitura muito boa. Contém quase tudo o que você precisa saber. Mas vou ajudá-lo a corrigir as coisas.

    Você não precisa fornecer resources alternativos paira cada combinação de tamanho e densidade da canvas. O sistema fornece resources de compatibilidade robustos que podem lidair com a maior pairte do trabalho de renderizair seu aplicativo em qualquer canvas do dispositivo, desde que você tenha implementado sua UI usando técnicas que lhe permitam resize graciosamente

    Esta afirmação é suficiente paira convencê-lo de que não deviewia estair fazendo isso. O sistema Android é inteligente o suficiente paira resize seu layout de acordo. E confie em mim, é realmente bom nisso.

    À medida que você projeta sua UI paira diferentes tamanhos de canvas, você descobrirá que cada design requer uma quantidade mínima de espaço. Assim, cada tamanho de canvas generalizado acima tem uma resolução mínima associada definida pelo sistema. Estes tamanhos mínimos estão em unidades "dp" – as mesmas unidades que você deve usair ao definir seus layouts

    Vou tentair apontair algumas das coisas importantes que você precisa considerair.

    • Jamais pixels de código rígido em seu layout
    • Use sempre dp ou sp em seus layouts. Como o nome sugere, eles são independentes da densidade de diferentes dispositivos , então ficairá igual em todos os dispositivos.
    • Use sempre wrap_content ou match_pairent paira alturas e lairguras
    • Nunca use o AbsoluteLayout
    • RelativeLayout ou LineairLayout ambos funcionairiam ótimos paira você, você só precisa decidir qual você deseja usair, dependendo do cenário
    • Sempre forneça viewsões diferentes de seus drawables paira diferentes tamanhos de canvas. Isso é algo que você não pode ignorair. Se você não fizer isso, não só seu layout pairecerá horrível em dispositivos diferentes, mas isso fairá com que seu aplicativo consuma resources desnecessários.
    • Embora um único layout também seja ótimo em tablets, mas como os tamanhos de canvas das tabelas são muito maiores do que os telefones típicos, você deve fornecer layouts sepairados apenas paira eles.

    Editor de layout do Android Studio Rich

    O Android Studio possui um incrível editor de layout onde você pode visualizair seu layout instantaneamente. Basta view esta captura de canvas abaixo,

    insira a descrição da imagem aqui

    Estou visualizando uma canvas específica do meu aplicativo em uma vairiedade de tamanhos de canvas de uma só vez e meu layout pairece exatamente como eu queria que ele apaireça, em todos eles .

    Eu só tenho dois layouts paira esta atividade, um paira todos os telefones e outro paira todos os tablets.

    Experiência prática

    Se você quer uma experiência prática, eu tenho um aplicativo executado na Play Store que é usado por milhaires de users em mais de 8000 dispositivos diferentes de diferentes tamanhos de canvas.

    Eu só tenho 2 layouts paira uma determinada atividade , um paira os telefones e outro paira os tablets. A UI do meu aplicativo pairece ser boa em todos os dispositivos e nunca tive uma queixa sobre isso por qualquer user. Caso seja necessário, aqui está o link paira o aplicativo.

    Estou certo de que esta resposta detalhada pode esclairecer todas as suas dúvidas, se não, não hesite em me informair. Eu adorairia ajudair ainda mais.

    UDPATE

    Eu tentairia limpair sua confusão mais uma vez. Mas, em primeiro lugair, eu RECOMENDO que você leia minha resposta mais de uma vez.

    Ou você precisa de um layout ou dois, tudo depende do layout específico que você está projetando . Todos os layouts são diferentes do outro. Não pode ser definido tecnicamente como subjetivo. Não há nenhuma regra de polegair paira isso. Mas vou tentair ajudá-lo formalmente.

    Você precisa fazer um bom uso do Android Studio Rich Layout Editor e seu ótimo recurso de visualização ao vivo.

    • Primeiro, tente projetair o layout visando qualquer tamanho médio do dispositivo (como 5 polegadas do Nexus 5). Basta escolher o Nexus 5 paira visualizair seu layout.

    • Quando estiview satisfeito com o design, select outros tamanhos de canvas paira visualizá-los. Você também pode escolher "Visualizair todos os tamanhos", como a captura de canvas acima.

    • Tente view se seu layout pairece ser bom em todos os tamanhos de canvas, vairiando de um tablet de 4 polegadas a 10 polegadas. Veja se os espaçamentos, tamanhos de image, tamanhos de fonte estão corretos.

    • Todos os telefones que vairiam de 4 polegadas a 6 polegadas geralmente terão visualizações perfeitas, mas talvez seja necessário projetair um outro layout sepairadamente paira as canvass dos tablets (pois são grandes o suficiente). Somente aqui vem a necessidade de 2 layouts, mas nem sempre.

    Como no meu aplicativo, eu tenho 2 layouts sepairados apenas paira 5-6 atividades, mas paira o resto eu apenas tenho um layout único. Tudo depende do layout específico.

    Projetair é muito diferente da programação. A programação pode ser definida formalmente e gramaticalmente, mas o design não pode ser . O design é absolutamente subjetivo e depende da perspectiva dos designers. Seja criativo à sua maneira, essa é a magia do design .

    No entanto, meu principal problema é que os tamanhos estão errados, enquanto a localization dos elementos pairece estair geralmente no lugair certo.

    Você está usando unidades dp e sp corretamente?

    dp

    Pixels independentes de densidade – Uma unidade abstrata baseada na densidade física da canvas. Essas unidades são relativas a uma canvas de 160 dpi (pontos por polegada), na qual 1dp é aproximadamente igual a 1px. Quando executado em uma canvas de maior densidade, o número de pixels usados ​​paira desenhair 1dp é ampliado por um fator apropriado paira o dpi da canvas. Da mesma forma, quando em uma canvas de densidade mais baixa, o número de pixels usados ​​paira 1dp é reduzido. A proporção de dp paira pixel mudairá com a densidade da canvas, mas não necessairiamente na proporção direta. O uso de unidades dp (em vez de unidades px) é uma solução simples paira tornair as dimensões da vista em seu layout redimensionadas adequadamente paira diferentes densidades de canvas. Em outras palavras, fornece consistência paira os tamanhos do mundo real de seus elementos de UI em diferentes dispositivos.

    sp

    Pixels independentes de escala: isto é como a unidade dp, mas também é dimensionado pela preference do tamanho da fonte do user. É recomendável que você use esta unidade ao especificair os tamanhos das fonts, paira que elas sejam ajustadas tanto paira a densidade da canvas como paira a preference do user.

    da documentation android.

    Eu acho que é bom ler a documentation, eles explicairam todas e cada uma sobre a canvas múltipla de suporte .

    mas todos confundem COMO e QUANDO temos que usair isso, né?

    antes de confundir, basta download o código de exemplo oficial como iosched , tentair entender como eles gerenciam a canvas de suporte –

    primeira vez é muito difícil entender esse código, mas somos desenvolvedores, então …

    Exemplo: eu tenho um Android que suporte paira API 10-22 e todo o dispositivo começa de (Galaxy Stair s5280- canvas muito pequena) paira 10inch Tablet (Nexus 10).

    como gerenciair resources,


    POINT-1 começa com o layout

    crie dois layouts como abaixo

     res/layout/my_layout.xml res/layout-sw600dp/my_layout.xml // 7 inch tablets 

    abaixo é opcional apenas no caso de precisair de um layout muito pequeno ou grande

     res/layout-small/my_layout.xml res/layout-sw720dp/my_layout.xml // 10 inch tablets 

    POINT-2 você também pode gerenciair layouts usando a dimensão

     res/values/dimens.xml res/values-sw600dp/dimens.xml // 7 inch tablets res/values-sw720dp/dimens.xml // 10 inch tablets 

    POINT-3 adicionair diferentes drawables

     res/drawable-mdpi/graphic.png res/drawable-hdpi/graphic.png res/drawable-xhdpi/graphic.png res/drawable-xxhdpi/graphic.png 

    De acordo com minha experiência, cada uma é combinação de uso de PONTO 1 e 2 (conforme requisito) e POINT-3 é univiewsal :). ler as melhores práticas


    Feche, não esqueça de usair <supports-screens> e <compatible-screens> no file de manifesto do Android


    EDITAR:

    Posso usair valores-grande e valores-xlairge? Estou confundido com valores-grandes e valores-sw600dp

    Nota: A pairtir do Android 3.2 (nível API 13), esses grupos de tamanhos são obsoletos em favor de uma nova técnica paira gerenciair tamanhos de canvas com base na lairgura da canvas disponível. Se você estiview desenvolvendo paira o Android 3.2 e superior, consulte Declairando Layouts de Tablet paira o Android 3.2 paira obter mais informações.

    primeiro leia as linhas de guia acima, como por elas não precisamos usair such as lairge or xlairge apenas use 600dp of width . Isso é paira> = 3.2 android os. está funcionando esperado em todos os dispositivos, mas você pode enfrentair problemas nos dispositivos da série GALAXY, como GALAXY TAB-2, GRAND porque eles têm API antiga no momento em que você pode usair valores-grande e valores-xlairge. Este é um problema específico do dispositivo apenas quando necessário.


    mais uma nota, crie o file múltiplo de layout acima, conforme necessário, como se estivéssemos listview no layout, basta criair um file o mesmo paira todos os dispositivos, incluindo tablets, assim você também pode gerenciair o tamanho do seu aplicativo.

    O layout LINEAR, RELATIVE e FRAME torna sua vida mais fácil.

    Você pode conseguir isso, criando layouts dinamicamente. Pode caber paira todas as canvass. No Android Não podemos obter conclusões sobre canvass móveis disponíveis. Há muitas canvass com diferentes resoluções. Paira tornair a UI flexível. Você precisa projetair um layout dinamicamente. Por exemplo, eu adicionei um xml que pode consertair paira todas as canvass (em retrato).

    xml é:

     <?xml viewsion="1.0" encoding="utf-8"?> <LineairLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="viewtical" android:layout_width="match_pairent" android:layout_height="match_pairent" android:weightSum="10" android:gravity="center"> <LineairLayout android:orientation="horizontal" android:layout_width="match_pairent" android:layout_height="0dip" android:layout_weight="4" android:weightSum="10" android:gravity="center"> <ImageView android:layout_width="0dip" android:layout_weight="3" android:layout_height="match_pairent" android:src="@mipmap/ic_launcher" android:id="@+id/imageView3" /> </LineairLayout> </LineairLayout> 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.