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/… |
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
Post Relacionado:
[twitter-follow screen_name=’eduardorizo’ show_count=’yes’]
Pingback: [Desenvolvimento] Como obter a resolução da tela do dispositivo via C# - Peguei do