Curso Windows Phone – Como determinar a resolução da tela do dispositivo

Olá pessoal, tudo bom?

O Windows Phone 8 update 3 suporta aparelhos com resoluções WVGA, WXGA, 720p e 1080p, diferente do que acontece com o Windows Phone 7.1 que suporta apenas a resolução WVGA, assim, resolvi escrever esse post para ajudar em situações onde o desenvolvedor precise determinar a resolução do dispositivo para ajustar o layout ou outros detalhes da APP.

Para perceber melhor as diferenças entre as resoluções observe a tabela e a figura abaixo:

Resolução Aspecto Resolução dimensionada
WVGA 480×800 15:9 480×800
WXGA 768×1280 15:9 480×800
720p 720×1280 16:9 480×853
1080p 1080×1920 16:9 480×853
Fonte: http://msdn.microsoft.com/…
Fonte: https://msdn.microsoft.com/en-us/library/windows/apps/jj206974(v=vs.105).aspx#BKMK_UsingtheGridcontrol
Fonte: https://msdn.microsoft.com/en-us/library/windows/apps/jj206974(v=vs.105).aspx#BKMK_UsingtheGridcontrol

Dado o exposto, vejamos como reconhecer a resolução do dispositivo via código C#.

1º passo: Criar uma classe que retorne a resolução do aparelho. No meu exemplo a classe foi nomeada como ResolucaoTela.cs e na solução do Visual Studio está acomodada em uma pasta chamada Helper.


using System;

namespace ResolucaoTela.Helper
{
  public enum Resolucoes { WVGA, WXGA, HD };

  public static class ResolucaoHelper
  {
    private static bool IsWvga
    {
      get { return App.Current.Host.Content.ScaleFactor == 100; }
    }

    private static bool IsWxga
    {
      get { return App.Current.Host.Content.ScaleFactor == 160; }
    }

    private static bool IsHD
    {
      get { return App.Current.Host.Content.ScaleFactor == 150; }
    }

    public static Resolucoes ResolucaoAtual
    {
      get
      {
        if (IsWvga) return Resolucoes.WVGA;
        else if (IsWxga) return Resolucoes.WXGA;
        else if (IsHD) return Resolucoes.HD;
        else throw new InvalidOperationException("Resolução desconhecida.");
      }
    }
  }
}

2º passo: No code-behind da página XAML fazer uso da classe definida acima e determinar a resolução atual para a APP


public partial class MainPage : PhoneApplicationPage
{
  // Constructor
  public MainPage()
  {
  InitializeComponent();

  switch (Helper.ResolucaoHelper.ResolucaoAtual)
  {
    case Helper.Resolucoes.WVGA:
      txtResolucao.Text = "WVGA - 480 x 800 - Resolução dimensionada: 480 x 800";
      break;
    case Helper.Resolucoes.WXGA:
      txtResolucao.Text = "WXGA - 768 x 1280 - Resolução dimensionada: 480 x 800";
      break;
    case Helper.Resolucoes.HD:
      txtResolucao.Text = "HD - 720 x 1280 - Resolução dimensionada: 480 x 853";
      break;
  }
...
...

Para o Windows Phone 8.1 utilize o seguinte código para determinar a resolução da tela:


var rawpixelperview = DisplayInformation.GetForCurrentView().RawPixelsPerViewPixel;
double width = Math.Round(Window.Current.Bounds.Width * rawpixelperview);
double heigth = Math.Round(Window.Current.Bounds.Height * rawpixelperview);

Fica a dica!

Abraços,

Eduardo Henrique Rizo

MCP

Post Relacionado: 

[twitter-follow screen_name=’eduardorizo’ show_count=’yes’]

Fonte: Multi-resolution apps for Windows Phone 8

1 comentário em “Curso Windows Phone – Como determinar a resolução da tela do dispositivo”

  1. Pingback: [Desenvolvimento] Como obter a resolução da tela do dispositivo via C# - Peguei do

Deixe um comentário