我想知道在 windows phone 7 中开发应用程序时处理不同屏幕分辨率的最佳方法是什么。
因为我以 480 x 800 像素开发所有应用程序,而且我知道并非所有移动设备都支持 480 x 800 像素分辨率。
如果我在 xaml 中对宽度、高度、边距等进行硬编码,那么当手机不支持 480x800 分辨率时就会出现问题。
那么在单个应用程序中管理所有分辨率的最佳方法是什么?就像在 android 中有不同的文件夹用于不同的分辨率(Hdpi,Ldpi)。
帮我
我想知道在 windows phone 7 中开发应用程序时处理不同屏幕分辨率的最佳方法是什么。
因为我以 480 x 800 像素开发所有应用程序,而且我知道并非所有移动设备都支持 480 x 800 像素分辨率。
如果我在 xaml 中对宽度、高度、边距等进行硬编码,那么当手机不支持 480x800 分辨率时就会出现问题。
那么在单个应用程序中管理所有分辨率的最佳方法是什么?就像在 android 中有不同的文件夹用于不同的分辨率(Hdpi,Ldpi)。
帮我
请阅读我之前关于该主题的回答: Wen of WP8 Multi-resolution support , APIs for WP8 mutli-resolution , DevCenter multiple XAP support , and WP7 & WP8 co-development guide。
具体看一下运行时适配下的WP7 & WP8共同开发指南。有这个代码片段:
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"));
另请查看具有以下三个互斥代码片段的 WP8 多分辨率 API :
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"));
在 wp8 中开发应用程序时,我得到了处理不同屏幕分辨率的解决方案。
JustinAngel anser 也是正确的,但它有些复杂,因为它包含大量需要维护的代码,而且有些困难。
因此,请使用 Telerik RedControls。无需维护代码隐藏,并且根据分辨率加载不同图像的简单直接方法。
请参考此链接
希望这对所有 wp8 开发人员都有帮助。