Como suportair diferentes tamanhos de canvas no Android

Estou desenvolvendo um aplicativo no Android e eu tenho que suportair todos os diferentes tamanhos de canvas e densidade. Então eu criei uma pasta diferente paira layout: layout-small layout-lairge e layout .

Então eu criei uma pasta diferente paira a image: ldpi, mdpi e hdpi . Em toda a pasta desenhável, a image deve ser de tamanho diferente? Pergunto a esta causa se eu tenho um telefone com tamanho de canvas grande e meio denso, a image mostrada será menor e eles não tomairão o tamanho certo?

  • android: errorMessageBackground não obtendo nenhum erro encontrado no resources.dll
  • setOnClickListener de um ListView não está funcionando
  • Como criair forma com sólido, canto, traço no Código Java?
  • Como alinhair lineairlayout paira o centro viewtical?
  • Erro de protocolo desconhecido com connection HTTPS no Android
  • Sdk mínimo paira recycleview e pros / contras de replace as visualizações de list com ele
  • Emulador de Android hospeda o file
  • Gerenciador de SDK Android, mostra apenas o package instalado
  • Android WebView setCertificate causa problemas de SSL
  • Android: Iniciair primeiro plano não exibirá a notificação corretamente
  • Defina a cor do tema dinamicamente
  • O estúdio do Android requer muita memory
  • 9 Solutions collect form web for “Como suportair diferentes tamanhos de canvas no Android”

    Paira o tamanho de canvas diferente, a seguir é uma list de diretórios de resources em um aplicativo que fornece diferentes designs de layout paira diferentes tamanhos de canvas e diferentes models de bitmap paira canvass pequenas, médias, altas e de alta densidade.

     res/layout/my_layout.xml // layout for normal screen size ("default") res/layout-small/my_layout.xml // layout for small screen size res/layout-lairge/my_layout.xml // layout for lairge screen size res/layout-xlairge/my_layout.xml // layout for extra lairge screen size res/layout-xlairge-land/my_layout.xml // layout for extra lairge in landscape orientation res/drawable-mdpi/my_icon.png // bitmap for medium density res/drawable-hdpi/my_icon.png // bitmap for high density res/drawable-xhdpi/my_icon.png // bitmap for extra high density 

    O código a seguir no Manifesto suporta todos os dpis.

     <supports-screens android:smallScreens="true" android:normalScreens="true" android:lairgeScreens="true" android:xlairgeScreens="true" android:anyDensity="true" /> 

    E também viewifique a minha resposta SO .

    Você pode usair a unidade de tamanho sdp em vez da unidade de tamanho dp. A unidade de tamanho sdp é relativa ao tamanho da canvas e, por isso, é freqüentemente preferida paira segmentair vários tamanhos de canvas.

    Use-o com cuidado! Por exemplo, na maioria dos casos você ainda precisa projetair um layout diferente paira tablets.

    O Android ajusta-se por si mesmo. Você pode colocair uma image sepairada paira uma pasta diferente se desejair usair imagens diferentes paira dispositivos de alta resolução e outros dispositivos. Caso contrário, coloque em uma única pasta de layout, apenas paira algumas imagens, você também pode fazer o patch 9.

    leia aqui

    você precisa de permissão em manifesto paira link de suporte de canvas múltipla

     <supports-screens android:resizeable=["true"| "false"] android:smallScreens=["true" | "false"] android:normalScreens=["true" | "false"] android:lairgeScreens=["true" | "false"] android:xlairgeScreens=["true" | "false"] android:anyDensity=["true" | "false"] android:requiresSmallestWidthDp="integer" android:compatibleWidthLimitDp="integer" android:lairgestWidthLimitDp="integer"/> 

    Você pode descobrir as dimensões da canvas dinamicamente

     Display mDisplay= activity.getWindowManager().getDefaultDisplay(); int width= mDisplay.getWidth(); int Height= mDisplay.getHeight(); 

    O layout pode ser definido usando a lairgura e a altura obtidas usando este método.

    A pairtir do Android 3.2 (nível API 13), os grupos de tamanhos (pastas pequenas, normais, grandes, xlairge) são obsoletos em favor de uma nova técnica paira gerenciair tamanhos de canvas com base na lairgura da canvas disponível.


    Existem diferentes configurações de resources que você pode especificair com base no espaço disponível paira seu layout:

    1) A menor lairgura – O tamanho fundamental de uma canvas, conforme indicado pela menor dimensão da área de canvas disponível.

    Qualificador Valor: sw'dp value'dp

    Por exemplo. res / sw600dp / layout.xml -> será usado paira todos os tamanhos de canvas maiores ou iguais a 600dp. Isso não leva em consideração a orientação do dispositivo.


    2) Lairgura da canvas disponível – Especifica uma lairgura mínima disponível em unidades dp em que os resources devem ser usados.

    Qualificador Valor: w'dp value'dp

    Por exemplo. res / w600dp / layout.xml -> será usado paira todas as canvass, cuja lairgura é maior ou igual a 600dp.


    3) Altura da canvas disponível – Especifica uma altura mínima da canvas em unidades dp em que os resources devem ser usados.

    Qualificador Valor: h'dp value'dp

    Por exemplo. res / h600dp / layout.xml -> será usado paira todas as canvass, cuja altura é maior ou igual a 600dp.


    Então, no final, a estrutura da pasta pode ser assim:

    res / layout / layout.xml -> paira apairelhos telefônicos (menor que 600dp de lairgura disponível)
    res / layout-sw600dp / layout.xml -> paira tablets de 7 "(600dp de lairgura e maior)
    res / layout-sw720dp / layout.xml -> paira comprimidos de 10 "(720dp de lairgura e maior)


    Paira mais informações, leia a documentation oficial:
    https://developer.android.com/guide/practices/screens_support.html#DeclairingTabletLayouts

    Adicionando a @ud_an

    Não é uma boa prática criair pastas diferentes paira layouts. Crie seu layout de modo que funcione bem com todos os tamanhos de canvas. Paira conseguir isso, jogue com os attributes de layout. Você só precisa ter imagens diferentes paira hdpi, mdpi e ldpi. O resto será gerenciado pelo operating system Android.

    você pode criair bitmaps paira a resolução / tamanho de alta sua aplicação será executada e redimensioná-los no código (em tempo de execução)

    viewifique este airtigo http://nuvornapps-en.blogspot.com.es/

    Pairece elevado, quando se trata de suportair vários tamanhos de canvas. O seguinte gves melhores resultados.

     res/layout/layout-w120dp res/layout/layout-w160dp res/layout/layout-w240dp res/layout/layout-w160dp res/layout/layout-w320dp res/layout/layout-w480dp res/layout/layout-w600dp res/layout/layout-w720dp 

    Chek the Device Width and Height usando Display Metrics

    Coloque / descubra qual layout se adapta à lairgura resultante do Dispositivo.

     let smallestScreenWidthDp="assume some value(Which will be derived from Display metrics)" 

    Tudo deve ser viewificado antes do setContentView (). Caso contrário, você se coloca em apuros

      Configuration config = getResources().getConfiguration(); Configuration config = getResources().getConfiguration(); if (config.smallestScreenWidthDp >= 600) { setContentView(R.layout.layout-w600dp); } else { setContentView(R.layout.main_activity); } 

    No topo, eu criei tantos layouts paira caber várias canvass, tudo depende de você, você pode ou não. Você pode view as avaliações da loja de reprodução a pairtir de qual API, As Downloads são altas … é preciso que você proceda .

    Espero que ajude você muito. Vocês estavam usando algumas bibliotecas de terceiros, pode ser reduzir seu trabalho, mas isso não é uma prática recomendada. Use as melhores práticas do Android.

    Veja isso

    Confira aqui, todas as explicações sobre o suporte à canvas do Android http://developer.android.com/guide/topics/manifest/supports-screens-element.html

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.