Qual parte do Android é responsável por escolher um perfil de recursos correto?
Tenho um problema estranho.
Antes de você chegar a uma ideia de me atacar, estou trabalhando em um Jelly Bean personalizado. Portanto, as "abordagens boas habituais" podem não funcionar aqui, e soluções alternativas sujas têm que ser feitas.
Eu tenho um APK que contém o seguinte em recursos:
layout
layout-mdpi
layout-land
layout-large-mdpi
layout-large-land-mdpi
layout-large-hdpi
layout-large-xhdpi
E alguns outros códigos de métricas retornaram isso:
D/AppDemo( 2091): measured width: 1920 PE width: 1920 scaleFactor = 1.0
D/AppDemo( 2091): [ANDROID] measured width: 1920 measured height: 1080
D/AppDemo( 2091): [ANDROID] scale for resources: 2.0 xdpi: 320.0 ydpi: 320.0
D/AppDemo( 2091): [ANDROID] screen density: xhdpi
D/AppDemo( 2091): [ANDROID] screen size: large
D/AppDemo( 2091): [ANDROID] using layout: layout-mdpi
Então, olhando para as métricas, porque não élayout-large-xhdpi
sendo carregado?
Por favor, me diga onde eu posso procurar isso. Eu realmente preciso encontrar uma maneira de forçar o layout / recurso /AssetManager
para carregar um layout específico.
Eu sei que o comentário mais popular sobre esta questão é "você não precisa / por que você temlayout-xhdpi
, Você devia terdrawable-xhdpi
elayout-large
"mas, fique comigo.
Eu apreciaria mesmo pequenas dicas sobre onde olhar e o que procurar. Tão longe,AssetManager
parece ser o lugar para começar a escavar / registrar.
Quando eu omitirlayout-mdpi
, o aplicativo falha em mim, com recursos ausentes. O bug parece ser que, mesmo que o código retornexhdpi
, assumemdpi
Em outro lugar. Eu preciso encontrar isso e corrigi-lo para que meus aplicativos pareçam tão legais quanto no ICS :)
Estou descobrindo qual layout é carregado de uma maneira simples - todos os layouts de raiz têm umandroid:tag
elemento, e quando eusetContentView(R.layout.main_layout)
Eu pego a tag no elemento raiz e sei qual pasta foi carregada. Além do feedback visual, isso eventualmente terá que corresponder à configuração do meu dispositivo.
Desde já, obrigado.