phone celulares caracteristicas windows-phone-7 windows-phone

windows phone 7 - celulares - Cómo obtener resoluciones de pantalla en dispositivos con Windows Phone



windows phone 7.8 whatsapp (3)

Como se indica en el artículo de MSDN al que se ha vinculado: MSDN

Windows Phone 7 solo admite una sola resolución, 800 x 480. Dado que su proyecto se dirige a WP7, ese sería el comportamiento esperado. Si está desarrollando un proyecto de Windows Phone 8, debería ver que App.Current.Host.Content.ScaleFactor debería arrojar resultados diferentes.

Probablemente necesite crear un proyecto WP8 para personalizar para las distintas resoluciones en WP8. Si aún desea dar soporte a los dispositivos WP7, necesitará crear un proyecto separado WP7.

Me encuentro en problemas y agradecería la ayuda de expertos aquí. Estoy tratando de obtener una resolución de pantalla para poder usar diseños / imágenes apropiados según los tipos de teléfono.

Mi tipo de proyecto es WP7. Cada vez que ejecuto código en diferentes dispositivos WP7 y WP8, obtengo la misma resolución cada vez (800 X 480). El comportamiento esperado es obtener una resolución diferente en función del tipo de dispositivo, por ejemplo, WVGA = 800 x 480, WXGA = 1280 x 768, 720p = 1280 x 720.

Los 3 fragmentos de código siguientes me dieron la misma resolución de 800 X 480, que no es el comportamiento esperado.

Application.Current.RootVisual.RenderSize.Height + " x " + Application.Current.RootVisual.RenderSize.Width; (App.Current.RootVisual as FrameworkElement).ActualHeight + " x " + (App.Current.RootVisual as FrameworkElement).ActualWidth; App.Current.Host.Content.ActualHeight + " x " + App.Current.Host.Content.ActualWidth;

El artículo de MSDN habla sobre cómo hacer esto en WP8, pero tenga en cuenta que también quiero que el código se ejecute en el dispositivo WP7.


Puede intentar cargar App.Current.Host.Content.ScaleFactor usando reflection.

No tengo mi entorno wp8 ahora, pero puedes ver la solución similar aquí . Lo usan para crear wilde tiles en wp7.8


Terminé escribiendo el siguiente código basado en la recomendación de Anton Sizikov anterior. Utiliza la reflexión para leer la propiedad ScaleFactor. Si la aplicación 7.1 se está ejecutando en dispositivos WP8, la reflexión arrojará un valor para la propiedad ScaleFactor y, en función de la resolución del dispositivo, se puede determinar.

public enum Resolutions { WVGA, WXGA, HD720p }; public static class ResolutionHelper { static int? ScaleFactor; static ResolutionHelper() { object scaleFactorValue = GetPropertyValue(App.Current.Host.Content, "ScaleFactor"); if (scaleFactorValue != null) { ScaleFactor = Convert.ToInt32(scaleFactorValue); } } private static bool IsWvga { get { return ScaleFactor.HasValue && ScaleFactor.Value == 100; } } private static bool IsWxga { get { return ScaleFactor.HasValue && ScaleFactor.Value == 160; } } private static bool Is720p { get { return ScaleFactor.HasValue && ScaleFactor.Value == 150; } } public static Resolutions CurrentResolution { get { if (IsWxga) return Resolutions.WXGA; else if (Is720p) return Resolutions.HD720p; return Resolutions.WVGA; } } private static object GetPropertyValue(object instance, string name) { try { return instance.GetType().GetProperty(name).GetValue(instance, null); } catch { // Exception will occur when app is running on WP7 devices as "ScaleFactor" property doesn''t exist. Return null in that case. return null; } } }