Existe alguma maneira de determinar a categoria do tamanho da tela do dispositivo atual, como pequeno, normal, grande, xlarge?
Não é a densidade, mas o tamanho da tela.
Existe alguma maneira de determinar a categoria do tamanho da tela do dispositivo atual, como pequeno, normal, grande, xlarge?
Não é a densidade, mas o tamanho da tela.
Você pode usar a Configuration.screenLayout
máscara de bits.
Exemplo:
if ((getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_SIZE_MASK) ==
Configuration.SCREENLAYOUT_SIZE_LARGE) {
// on a large screen device ...
}
O código abaixo exibe a resposta acima, exibindo o tamanho da tela como um Toast.
Este código abaixo exibe a densidade da tela como um brinde.
fonte
A resposta de Jeff Gilfelt como método auxiliar estático:
fonte
fonte
Obrigado pelas respostas acima, que me ajudaram muito :-) Mas para aqueles (como eu) obrigados a ainda suportar o Android 1.5, podemos usar a reflexão de java para compatibilidade retroativa:
fonte
Configuration
classe. Esses são valores finais estáticos que serão incorporados no momento da compilação (ou seja, serão substituídos pelos valores reais), para que seu código não seja quebrado nas versões mais antigas da plataforma.targetSdkVersion
último lançamento.Se você deseja conhecer facilmente a densidade e o tamanho da tela de um dispositivo Android, pode usar este aplicativo gratuito (sem permissão): https://market.android.com/details?id=com.jotabout.screeninfo
fonte
Precisa verificar telas grandes e densidades altas? Este é o código alterado da resposta escolhida.
fonte
Aqui está uma versão Xamarin.Android da resposta de Tom McFarlin
fonte
Tente esta função isLayoutSizeAtLeast (int screenSize)
Para verificar a tela pequena, pelo menos 320x426 dp e acima de getResources (). GetConfiguration (). IsLayoutSizeAtLeast (Configuration.SCREENLAYOUT_SIZE_SMALL);
Para verificar a tela normal, pelo menos 320 x 480 dp e acima, getResources (). GetConfiguration (). IsLayoutSizeAtLeast (Configuration.SCREENLAYOUT_SIZE_NORMAL);
Para verificar a tela grande, pelo menos 480 x 640 dp e acima, getResources (). GetConfiguration (). IsLayoutSizeAtLeast (Configuration.SCREENLAYOUT_SIZE_LARGE);
Para verificar uma tela extra grande, pelo menos 720x960 dp e acima de getResources (). GetConfiguration (). IsLayoutSizeAtLeast (Configuration.SCREENLAYOUT_SIZE_XLARGE);
fonte
Em 2018, se você precisar da resposta de Jeff em Kotlin, aqui está:
fonte
Você não poderia fazer isso usando um recurso de string e enumerações? Você pode definir um recurso de sequência que tenha o nome do tamanho da tela, como SMALL, MEDIUM ou LARGE. Em seguida, você pode usar o valor do recurso de cadeia de caracteres para criar uma instância do enum.
Defina um Enum no seu código para os diferentes tamanhos de tela de sua preferência.
Defina um recurso de sequência, por exemplo, tamanho da tela, cujo valor será SMALL, MEDIUM ou LARGE.
screensize
em um recurso de sequência em cada dimensão com a qual você se preocupa.Por exemplo,
<string name="screensize">MEDIUM</string>
iria em values-sw600dp / strings.xml e values-medium / strings.xml e<string name="screensize">LARGE</string>
em sw720dp / strings.xml e valores-large / strings.xml.ScreenSize size = ScreenSize.valueOf(getReources().getString(R.string.screensize);
fonte
Copie e cole esse código no seu
Activity
e, quando executado, seráToast
a categoria de tamanho da tela do dispositivo.fonte