Clique e receba as novidades quentinhas no Telegram

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çãoAspectoResolução dimensionada
WVGA480×80015:9480×800
WXGA768×128015:9480×800
720p720×128016:9480×853
1080p1080×192016:9480×853
Fonte: https://msdn.microsoft.com/…
Fonte: httpss://msdn.microsoft.com/en-us/library/windows/apps/jj206974(v=vs.105).aspx#BKMK_UsingtheGridcontrol

Fonte: httpss://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;
  }
...
...

Fica a dica!

Abraços,

Eduardo Henrique Rizo (@eduardorizo)

MCP

Post Relacionado: 

Fonte: Blog do Eduardo H. Rizo