惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Blog — PlanetScale
Blog — PlanetScale
Webroot Blog
Webroot Blog
T
Troy Hunt's Blog
S
Secure Thoughts
S
Security @ Cisco Blogs
S
Security Affairs
Forbes - Security
Forbes - Security
W
WeLiveSecurity
H
Hacker News: Front Page
T
Threatpost
Google Online Security Blog
Google Online Security Blog
S
Schneier on Security
有赞技术团队
有赞技术团队
WordPress大学
WordPress大学
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园 - Franky
腾讯CDC
IT之家
IT之家
博客园 - 聂微东
L
LINUX DO - 最新话题
罗磊的独立博客
Hacker News - Newest:
Hacker News - Newest: "LLM"
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 三生石上(FineUI控件)
Hacker News: Ask HN
Hacker News: Ask HN
C
CXSECURITY Database RSS Feed - CXSecurity.com
C
Cybersecurity and Infrastructure Security Agency CISA
C
CERT Recently Published Vulnerability Notes
Know Your Adversary
Know Your Adversary
V
Vulnerabilities – Threatpost
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
博客园_首页
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Cisco Talos Blog
Cisco Talos Blog
S
SegmentFault 最新的问题
酷 壳 – CoolShell
酷 壳 – CoolShell
Hugging Face - Blog
Hugging Face - Blog
L
LINUX DO - 热门话题
美团技术团队
G
GRAHAM CLULEY
T
The Exploit Database - CXSecurity.com
AI
AI
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Jina AI
Jina AI
Help Net Security
Help Net Security
N
News | PayPal Newsroom
月光博客
月光博客
Spread Privacy
Spread Privacy
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
N
News and Events Feed by Topic

博客园 - 蝗虫的大腿

IOS UITest 初始化 ViewController wp8.1 sdk preview 预览版 windows phone 网络开发三部曲(一)各种包的各种抓法 Windows phone UI虚拟化和数据虚拟化(二) Windows phone UI虚拟化和数据虚拟化(一) LongListSelector 控件 在 wp7 和wp8中的不同之处 wp8 longlistselector 动态加载datatemplate windows phone 设计时 数据源 xna 触控操作 备忘 windows phone 在代码中生成ApplicationBar wp8 模拟器启动失败的解决方法。 Xap 包装失败。未将对象引用设置到对象的实例。 解决办法 wp7 中Panorama控件 title 字体大小 样式的设置 不同服务器数据库之间的数据操作 jquery UI dialog 和 asp.net 控件 出错 失效 - 蝗虫的大腿 在sql server 中执行带参数的存储过程及计算运行时间 对于 抽象类 接口 的理解 http错误列表 常用的js正则表达式 - 蝗虫的大腿 - 博客园
WP8多分辨率解决方案
蝗虫的大腿 · 2012-08-07 · via 博客园 - 蝗虫的大腿

// 潜水多年来第一次写这么多字^_^

看见你出剪刀我再出石头

由于之前Windows Phone OS 7.1只有一个分辨率,所以我们无须担心我们的应用在这台手机运行ok在其他机型上会出问题.

我常听到同事抱怨,人类已经无法阻止android的分辨率了.苹果的开发者是幸福的^_^.

单一的分辨率,也意味着单一的机型.

不能给用户提供多样化的体验,也不是一件好事.作为后来者,微软在这两者间做出了权衡.要多分辨率.但不要泛滥!

WP8支持的分辨率

下面是WP8 开发者预览版所支持的分辨率,及比例

分辨率

分辨率

长宽比

Delta from Windows Phone OS 7.1

缩放结果

WVGA

480 × 800

15:9

None

480 × 800

WXGA

768 × 1280

15:9

1.6x scale

480 × 800

720p

720 × 1280

16:9

1.5x scale, 80 pixels taller (53 pixels, before scaling)

480 × 853

如何以最小的成本,适应这三款分辨率.是我们接下来要思考的话题.

在布局上最好是使用Grid

使用Grid,我们可以使用*和auto.来自适应分辨率.

比如:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="14,0,10,0">

        <ScrollViewer HorizontalAlignment="Left" Height="540" VerticalAlignment="Top" Width="456">

             <Grid HorizontalAlignment="Center" Height="618" VerticalAlignment="Top" Width="456">

                 <Grid.RowDefinitions>

                     <RowDefinition Height="98*"/>

                     <RowDefinition Height="13*"/>

                 </Grid.RowDefinitions>

                 <TextBlock TextWrapping="Wrap" Margin="22,20,10,0" Text="fasdfasdfasd"/>

             </Grid>

        </ScrollViewer>

 </Grid>

这里

<RowDefinition Height="98*"/>

<RowDefinition Height="13*"/>

不要写死数值硬编码. 要使用*或auto.

像canvas那种绝对定位,布局的控件尽量少的使用.

根据不同的分辨率加载图像

[注意]这里的图像不是我们想像的所有图片.只是像背景图像,应用初始化图.

由于分辨率的比例不同.我们需要做一些适配的工作.至于其他的如瓦片,应用图标.我们只需要按着WXGA的分辨率做一套就可以了.

系统会自动缩放合适的大小.

下面是如何动态加载[应用初始化图]

  1. 把图像的Copy to Output Directory属性值设成copy always.

2.

public enum Resolutions { WVGA, WXGA, HD720p };

public static class ResolutionHelper

{

   private static bool IsWvga

   {

      get

      {

         return Application.Current.Host.Content.ActualHeight == 800

         && Application.Current.Host.Content.ScaleFactor == 100;

      }

   }

 

   private static bool IsWxga

   {

      get

      {

         return Application.Current.Host.Content.ScaleFactor == 160;

      }

   }

    

   private static bool Is720p

   {

      get

      {

         return Application.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");

      }

   }

}

3.

public class MultiResImageChooser

{

   public Uri BestResolutionImage

   {

      get

      {

         switch (ResolutionHelper.CurrentResolution)

         {

            case Resolutions.HD720p:

               return new Uri("Assets/MyImage.screen-720p.jpg",             UriKind.Relative);

            case Resolutions.WXGA:

               return new Uri("Assets/MyImage.screen-wxga.jpg", UriKind.Relative);

            case Resolutions.WVGA:

                return new Uri("Assets/MyImage.screen-wvga.jpg", UriKind.Relative);

            default:

               throw new InvalidOperationException("Unknown resolution type");

           }

        }

     }

}

4.xaml中

<!--ContentPanel - place additional content here-->

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">

   <Image Source="{Binding BestResolutionImage, Source={StaticResource    MultiResImageChooser}}"/>

</Grid>

5.在app.xaml

xmlns:h="clr-namespace:MultiResSnippet"

6.

App.xaml

<!--Application Resources-->

<Application.Resources>

   <h:MultiResImageChooser x:Key="MultiResImageChooser"/>

</Application.Resources>

瓦片和图标

前面说过,对于瓦片和图标我们只需要制作一套WXGA的资源.

不过官方的说法很奇怪.用了[必须只有一套]…

下面是瓦片的尺寸

Tile size

WXGA

App list

100 × 100

Small

159 × 159

Medium

336 × 336

Large

691 × 336

关于从7.1升级到8.0

基于7.1的应用,基本上是不需要任何改动,就能运行于wp8.0的.

至于分辨率.如果是7.1的应用运行于8.0的WXGA的话.应用会像是一张480*800的图片放大成768*1280的样子.

在模拟器中100%显示的时候会有写模糊.

如果可以的话,推荐首先把7.1的应用打开转换成8.0

这样就可以使用8.0的新api了.

对于不同分辨率的逻辑上的处理.

我们可以使用条件编译来解决.

  #if WP8

  #end if

  这里只是举例,条件编译用法请查一下相关资料 .

另外.如果不能使一个项目实现就实现多辨率.可以再建一个项目.

不过维护起来要麻烦不少了.

觉得对您有用,请点支持谢谢!

转载请注明出处.

作者:蝗虫的大腿

http://www.cnblogs.com/beyoung/archive/2012/08/07/2627448.html