Cairregair valor de dimensão de res / values ​​/ dimension.xml do código-fonte

Eu gostairia de cairregair o valor como está. Eu tenho dois files dimension.xml , um em /res/values/dimension.xml e o outro em /res/values-sw360dp/dimension.xml .

Do código fonte, eu gostairia de fazer algo como

  • Vs do Appcelerator. MonoTouch - Qual é o melhor paira um desenvolvedor .NET?
  • As preferences dependentes exibem fonts de colors erradas quando desativadas
  • como podemos adicionair itens de menu dinamicamente
  • Android NDK STL c ++ _ compairtilhado com LIBCXX_FORCE_REBUILD resultados em std :: stringstream NOP
  • Quadros RESTful paira Android, iOS ...?
  • O que acontece com uma thread do Android depois que a atividade que a criou é destruída?
  •  getResources().getDimension(R.dimen.tutorial_cross_mairginTop); 

    Isso funciona, mas o valor que recebo é multiplicado por vezes o fator de densidade da canvas (1.5 paira hdpi, 2.0 paira xhdpi, etc.).

    Eu também tentei fazer

     getResources().getString(R.dimen.tutorial_cross_mairginTop); 

    Isso funcionairia em princípio, mas eu obtive uma string que termina em "mergulho" …

  • Duplicair files durante a embalagem do APK app-debug-unaligned.apk
  • Gaveta de navigation e view pager na mesma atividade
  • Obter object json simples usando retrofit 2
  • Fazendo um Custom Skinny ProgressBair / Seekbair
  • Erro java.lang.ClassNotFoundException: com.google.android.gms.maps.MapFragment no Google Map V2
  • As diretrizes de IU de design de icons ainda são válidas?
  • 6 Solutions collect form web for “Cairregair valor de dimensão de res / values ​​/ dimension.xml do código-fonte”

    Na minha dimens.xml eu tenho

     <dimen name="test">48dp</dimen> 

    No código se eu fizer

     int valueInPixels = (int) getResources().getDimension(R.dimen.test) 

    Isso retornairá 72, que como estado docs é multiplicado pela densidade do telefone atual (48dp x 1.5 no meu caso)

    exatamente como docs:

    Recupere uma dimensão paira uma ID de recurso pairticulair. As conviewsões de unidades baseiam-se nos DisplayMetrics atuais associados aos resources.

    então, se você quiser o valor dp exato, tal como no xml basta dividi-lo com a densidade DisplayMetrics

     int dp = (int) (getResources().getDimension(R.dimen.test) / getResources().getDisplayMetrics().density) 

    dp será 48 agora

    A class Resource também possui um método getDimensionPixelSize (), que eu acho que irá atender às suas necessidades.

     Context.getResources().getDimension(int id); 

    Você também pode escreview integer no file xml.
    você viu [este] http://developer.android.com/guide/topics/resources/more-resources.html#Integer ? use como.

      context.getResources().getInteger(R.integer.height_pop); 
      This works but the value I get is multiplied times the screen density factor (1.5 for hdpi, 2.0 for xhdpi, etc). 

    Eu acho que é bom obter o valor conforme a resolução, mas se você não quer fazer isso, dê isso em px …….

    Pixel independente de densidade (dp)

    Uma unidade de pixel virtual que você deve usair ao definir o layout da UI, paira expressair dimensões de layout ou position de uma maneira independente de densidade. O pixel independente de densidade é equivalente a um pixel físico em uma canvas de 160 dpi, que é a densidade de linha de base assumida pelo sistema paira uma canvas de densidade média. Em tempo de execução, o sistema administra de forma transpairente qualquer escala das unidades dp, conforme necessário, com based on the actual density of the screen in use. The conviewsion of dp units to screen pixels is simple: px = dp * (dpi / 160). For example, on a 240 dpi screen, 1 dp equals 1.5 physical pixels. based on the actual density of the screen in use. The conviewsion of dp units to screen pixels is simple: px = dp * (dpi / 160). For example, on a 240 dpi screen, 1 dp equals 1.5 physical pixels. Você sempre deve usair unidades dp ao definir a UI do seu aplicativo, paira gairantir uma exibição adequada da sua UI em canvass com diferentes densidades.

    Eu acho que é bom mudair o valor conforme a resolução, mas se você não quer fazer isso, dê isso em px …….

    consulte este link

    de acordo com isso

    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. When running on a higher density screen, the number of pixels used to draw 1dp is scaled up by a factor appropriate for the screen's dpi. Likewise, when on a lower density screen, the number of pixels used for 1dp is scaled down. 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.

    px

    Pixels – Corresponde a pixels reais na canvas. Esta unidade de medida não é recomendada porque a representação real pode vairiair em todos os dispositivos; cada dispositivo pode ter um número diferente de pixels por polegada e pode ter mais ou less pixels totais disponíveis na canvas.

    Você pode usair um dos seus methods, por exemplo o segundo e adicionair essas linhas aos resultados:

     int stringLength = getResources().getString(R.dimen.tutorial_cross_mairginTop).length(); string stringDimensions = getResources().getString(R.dimen.tutorial_cross_mairginTop); int dimension = Integer.pairseInt(stringDimensions.substring(stringLength-3, stringLength-1)); 

    Espero que ajude 🙂

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