如何在wp7中管理不同的屏幕分辨率?

时间:2012-12-26 05:00:53

标签: windows-phone-7 windows-phone-8 screen-resolution

我想知道在Windows Phone 7中开发应用程序时处理不同屏幕分辨率的最佳方法是什么。

因为我开发了480 x 800像素的所有应用程序,因为我知道并非所有移动设备都支持480 x 800像素分辨率。

如果我对xaml中的宽度,高度,边距等进行硬编码,那么当手机不支持480x800分辨率时会产生问题。

那么在单个应用程序中管理所有resolutin的最佳方法是什么?像在Android中有不同的文件夹不同的分辨率(Hdpi,Ldpi)。

帮帮我

2 个答案:

答案 0 :(得分:3)

请阅读我之前对该主题的回答:Zen of WP8 Multi-resolution supportAPIs for WP8 mutli-resolutionDevCenter multiple XAP supportWP7 & WP8 co-development guide

具体来看看WP7 & WP8 co-development guide under Runtime adaption。这有代码片段:

public Uri GetScaledImageUri(String imageName) 
{
    int scaleFactor = (int)Application.Current.Host.Content.ScaleFactor;
    switch (scaleFactor)
    {
        case 100: return new Uri(imageName + "_wvga.png", UriKind.RelativeOrAbsolute);
        case 150: return new Uri(imageName + "_720p.png", UriKind.RelativeOrAbsolute);
        case 160: return new Uri(imageName + "_wxga.png", UriKind.RelativeOrAbsolute);
        default:  throw new InvalidOperationException("Unknown resolution type");
    }
}

// Next line will load a correct image depending on the resolution of the device
MyImage.Source = new BitmapImage(GetScaledImageUri("myImage"));

另请查看具有以下三个互斥代码段的APIs for WP8 mutli-resolution

Image myImage = new Image();
if (MultiRes.Is720p)
    myImage.Source = new BitmapImage(new Uri("puppies.720p.jpg"));
else if (MultiRes.IsWvga)
    myImage.Source = new BitmapImage(new Uri("puppies.wvga.jpg"));
else if (MultiRes.IsWxga)
    myImage.Source = new BitmapImage(new Uri("puppies.wxga.jpg"));

if (MultiRes.Is720p)
    myImage.Source = new BitmapImage(new Uri(@"assets\16by9AspectRatio\puppies.jpg"));
else
    myImage.Source = new BitmapImage(new Uri(@"assets\15by9AspectRatio\puppies.jpg"));

if (MultiRes.IsHighResolution)
    myImage.Source = new BitmapImage(new Uri(@"assets\HD\puppies.jpg"));
else
    myImage.Source = new BitmapImage(new Uri(@"assets\SD\puppies.jpg"));

答案 1 :(得分:0)

我在wp8中开发应用程序时获得了处理不同屏幕分辨率的解决方案。

JustinAngel anser也是对的,但它有些令人反感,因为它包含了许多需要维护的代码,而且还有一些难以实现的代码。

因此使用Telerik RedControls.No代码隐藏是必要的维护和根据分辨率加载不同图像的简单直接方式。

请提供此链接

Multi-Resolution support in Windows Phone 8 Made Easy

希望这对所有wp8开发者都有帮助。