×
Namespaces

Variants
Actions
(Difference between revisions)

How to detect the screen resolution on Windows Phone

From Nokia Developer Wiki
Jump to: navigation, search
hamishwillee (Talk | contribs)
m (Hamishwillee -)
dan.ardelean (Talk | contribs)
(Dan.ardelean - - Solution)
Line 41: Line 41:
 
         if (Environment.OSVersion.Version.Major<8)   
 
         if (Environment.OSVersion.Version.Major<8)   
 
           return new Size(480,800);   
 
           return new Size(480,800);   
         int scaleFactor=(int) GetProperty(Application.Current.Host.Content, "ScaleFactor");   
+
         int scaleFactor=(int) GetProperty(System.Windows.Application.Current.Host.Content, "ScaleFactor");   
 
         switch (scaleFactor)   
 
         switch (scaleFactor)   
 
         {   
 
         {   

Revision as of 12:39, 16 May 2013

This article explains how to detect the display resolution using reflection. The code can be used in Windows Phone 7 and later.

WP Metro Icon UI.png
SignpostIcon XAML 40.png
WP Metro Icon WP8.png
SignpostIcon WP7 70px.png
Article Metadata
Code ExampleTested with
SDK: Windows Phone SDK 8.0
Devices(s): Lumia 920
Compatibility
Platform(s): Windows Phone 7 and later
Windows Phone 8
Windows Phone 7.5
Article
Created: dan.ardelean (30 Apr 2013)
Last edited: dan.ardelean (16 May 2013)

Contents

Overview

Windows Phone 7 apps can be run on Windows Phone 8 devices, and will usually display "acceptably" on the new display resolutions supported by Windows Phone 8. However if you want to take advantage of the new screen display resolutions, for example using higher quality images for higher resolution devices, you will need to know the ScaleFactor of the device.

The property is only available in the Windows Phone 8.0 SDK, but if you need to access it on a Windows Phone 7 app you can do so using reflection.

Solution

Retrieve the Get() method of the ScaleFactor property using reflection and invoke it only if the application is running on a Windows Phone 8 device.

public static Size DisplayResolution  
{
get
{
if (Environment.OSVersion.Version.Major<8)
return new Size(480,800);
int scaleFactor=(int) GetProperty(System.Windows.Application.Current.Host.Content, "ScaleFactor");
switch (scaleFactor)
{
case 100:
return new Size(480, 800);
case 150:
return new Size(720, 1280);
case 160:
return new Size(768, 1280);
}
return new Size(480, 800);
}
}
private static object GetProperty(object instance, string name)
{
var getMethod= instance.GetType().GetProperty(name).GetGetMethod();
return getMethod.Invoke(instance, null);
}

Test Code

The test code can be downloaded from here: File:DisplayResolution.zip

The Emulator output of the test code is shown below.

Emulator

References

297 page views in the last 30 days.
×