none
Tamanho da Tela RRS feed

  • Pergunta

  • Olá Pessoal!

    Gostaria de identificar o tamanho da tela do celular do meu usuário em tempo de execução!
    Alguém sabe se isso é possível??

    Obrigado
    []s
    segunda-feira, 15 de janeiro de 2007 15:59

Respostas

  • Você não falou qual a versão do Framework Sílvio, mas a forma recomendada agora no Framework 2.0, de acordo com a documentação do SDK, é usar a propriedade CurrentAutoScaleDimensions do objeto Form. É algo mais ou menos assim: 

    SizeF currentScreen = this.CurrentAutoScaleDimensions;
    if (currentScreen.Height == 192)
    {
       // VGA!.
    }

    A propriedade Height contem os DPI da resolução atual. 96 é QVGA e 192 é VGA.

    Outra forma é usar a propriedade System.Windows.Forms.Screen.PrimaryScreen.WorkingArea. Porém se sua aplicaçao for hi-dpi aware ela só vai retornar 240x320 indicando que será feito o upscaling usando a duplicação de pixels.

    E na API, claro, sempre podemos usar:

    int width = Screen.PrimaryScreen.Bounds.Width; 
    int height = Screen.PrimaryScreen.Bounds.Height;

    segunda-feira, 15 de janeiro de 2007 20:17
    Moderador
  • Humm legal.
    O que eu consegui até agora foi pegar o modelo do celular!
    Tenho uma tabela com as marcas de celulares mais comuns aqui no Brasil associados com os modelos e dimensão dos display.

    Estava usando isso para carregar uma imagem do tamanho certo no minibrowser do usuário!
    Vou executar o código que passou.

    []s
    quarta-feira, 17 de janeiro de 2007 12:38

Todas as Respostas

  • Você não falou qual a versão do Framework Sílvio, mas a forma recomendada agora no Framework 2.0, de acordo com a documentação do SDK, é usar a propriedade CurrentAutoScaleDimensions do objeto Form. É algo mais ou menos assim: 

    SizeF currentScreen = this.CurrentAutoScaleDimensions;
    if (currentScreen.Height == 192)
    {
       // VGA!.
    }

    A propriedade Height contem os DPI da resolução atual. 96 é QVGA e 192 é VGA.

    Outra forma é usar a propriedade System.Windows.Forms.Screen.PrimaryScreen.WorkingArea. Porém se sua aplicaçao for hi-dpi aware ela só vai retornar 240x320 indicando que será feito o upscaling usando a duplicação de pixels.

    E na API, claro, sempre podemos usar:

    int width = Screen.PrimaryScreen.Bounds.Width; 
    int height = Screen.PrimaryScreen.Bounds.Height;

    segunda-feira, 15 de janeiro de 2007 20:17
    Moderador
  • Obrigado José!

    Estou utilizando Framework 2.0, estou desenvolvendo uma aplicação Wap utilizando o VWD.
    Então não consegui encontrar essas propriedades.

    Mas de qualquer maneira ajudou bastante.
    []s
    terça-feira, 16 de janeiro de 2007 19:08
  • ahh...você não falou que era uma aplicação WAP...:p

    Você quer colocar as imagens do tamanho certo ou algo do tipo não é? Olha, você pode tentar isso:

    MobileCapabilities mc = (MobileCapabilities)Request.Browser;

    mc.ScreenPixelHeight
    mc.ScreenPixelWidth

    Mas eu nunca vi isso funcionar de verdade..:)

    A outra é ir direto nas informações do browser e ver o que tem lá. O código abaixo tem um exemplo disso:

    foreach (string key in Request.Browser.Capabilities.Keys)
    {
                Response.Write("<br/>" + key + ":  " + Request.Browser.Capabilities[key]);
    }

    que é o que eu faço normalmente.

    terça-feira, 16 de janeiro de 2007 19:17
    Moderador
  • Humm legal.
    O que eu consegui até agora foi pegar o modelo do celular!
    Tenho uma tabela com as marcas de celulares mais comuns aqui no Brasil associados com os modelos e dimensão dos display.

    Estava usando isso para carregar uma imagem do tamanho certo no minibrowser do usuário!
    Vou executar o código que passou.

    []s
    quarta-feira, 17 de janeiro de 2007 12:38