Windows Phone 8 比较 windows phone 7 来说有很多功能及性能上的提升例如支持多核 CUP、支持SD卡、多种分辨率、 显然WP7 WVGA - 480x800 的已经不能完全满足所用户的需求,很多用户喜欢大屏幕高分辨的手机,随着大屏手机的逐渐推出 WP8 也是支持大分辨率的屏幕【WXGA - 768x1280 和 720P - 720x1280】

之前跟大家提起过关于应用设配WP8多种分辨率的事情,但是可能还是有些同学不是很明白如何判断当前手机的分辨率以及如何让应用自适应当前的手机分辨率 今天我给大家详细的介绍一下。

Windows phone 8 支持的屏幕分辨率有三种如下:

Windows Phone 8 适应多屏分辨率-LMLPHP

其中我们可以清楚的看到 WVGA 和 WXGA的屏幕横宽比例都是 15:9 的,只有在720P 的情况下是 16:9 的这点要提醒大家有些应用或许就要对720P的情况进行特殊处理下 例如一些图片或者视频类的应用。

另外相信很多同学想实现全屏或者更改系统时间电量图标颜色 请使用 SystemTray 进行设置:

Windows Phone 8 适应多屏分辨率-LMLPHP

Windows Phone 8 适应多屏分辨率-LMLPHP
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
ProgressIndicator progress = new ProgressIndicator
{
IsVisible = true,
IsIndeterminate = true,
Text = "Downloading details..."
};
SystemTray.SetProgressIndicator(this, progress);
SystemTray.BackgroundColor = System.Windows.Media.Colors.Red;
SystemTray.ForegroundColor = System.Windows.Media.Colors.Blue;
//SystemTray.IsVisible = false;
}
Windows Phone 8 适应多屏分辨率-LMLPHP

通过上面的方法就可以隐藏状态条 或 根据应用的样式来调整 Tray的样式,个人感觉比较实用在这里给大家介绍一下。

当然今天的重点还是多分辨率的支持 以下是实现一个 ResolutionHeper class 判断当前屏幕分辨率的方法:

Windows Phone 8 适应多屏分辨率-LMLPHP
public enum Resolutions { WVGA, WXGA, HD720p };

public static class ResolutionHelper
{
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 Is720p
{
get
{
return App.Current.Host.Content.ScaleFactor == 150;
}
} public static Resolutions CurrentResolution
{
get
{
if (IsWvga) return Resolutions.WVGA;
else if (IsWxga) return Resolutions.WXGA;
else if (Is720p) return Resolutions.HD720p;
else throw new InvalidOperationException("Unknown resolution");
}
}
}
Windows Phone 8 适应多屏分辨率-LMLPHP

上面这段代码是使用 System.Windows.Interop 中的

public int ScaleFactor { get; }

The scale factor for the current application content area.

通过屏幕比例来判断屏幕分辨率。

另外在不同分辨率的手机上需要使用相应的SplashScreenImage.jpg文件来完美适应屏幕的大小,否则系统将会自动缩放。

Windows Phone 8 适应多屏分辨率-LMLPHP

04-21 07:30