Silverlight桌面应用程序的大部分代码无需修改就可以直接在Windows Phone上编译运行。将成熟的Silverlight应用从桌面往手机移植时需要特别关注的是一些细节,这可以在改写和优化两步中进行。
第一步,改写成可以在手机上运行应用程序。
用Windows Phone 开发工具建立新项目,并从桌面应用程序中复制相关代码。用Frame和Page 进行导航的桌面应用需要改成基于PhoneApplicationFrame和PhoneApplicationPage进行导航的手机应用。有网络接口的应用程序,需要确认网络服务(Web Service)的接口类型,必要时重写网络接口部分。最后通过编译找到和修改可能存在的其他移植问题。
第二步,需要对应用程序进行针对手机的优化。
用户界面需要针对手机屏幕的大小和分辨率进行优化。由于手机屏幕的尺寸限制,原用户界面上的文字可能会太小,不便阅读或触控。调整后的文字不应该硬编码,字号设置成15以上。触控区域应不小于9平方毫米或34像素。
手机屏幕有纵向的肖像模式(480 × 800)和横向的风景模式(800 × 480),应用程序应该考虑同时支持两种模式。Grid和StackPanel控件的灵活性高,适合于兼顾横向和纵向两种模式的应用程序。而Canvas控件使用屏幕上的绝对坐标值,对实现的依赖性高,所以适用于屏幕是单一横向或单一纵向模式的应用程序。考虑到有些手机配有硬件键盘,必要时应该禁止键盘输入。
优化用户界面风格时应该遵循Metro风格,也就是简洁、明确、便于移动中操作。可以选用全景视图或枢轴视图,便于用户快速在页面间浏览。还可以选用菜单栏,便于用户进行最常用的操作。
优化ListBox等控件的实现,就能支持手势输入。对用户自定义控件可以增加单击、双击等鼠标事件的支持,从而支持相应的手势输入。
一些应用程序的功能,如动画可能需要重新编码,以满足用户期望的性能。
使用网络服务的应用程序,需要考虑相应网络性能的优化。除了需要考虑手机上网络带宽的限制,还要充分考虑到网络延迟对应用程序性能的影响。在进行数据传输前,需要提前激活无线模块。依赖于互联网的应用程序,应该在独立存储区中缓存数据,并在网络中断时及时报错。如果应用程序频繁请求网络服务(Web Service),应该使用缓存机制收集数据、集中发送,以降低连接频率、提高效率。如果应用程序需要等待来自网络服务的更新,应该使用微软推送通知服务来及时收到通知。对后台运行的应用程序可以使用弹出通知,而前台运行的应用程序可以使用原生通知。
此外,应用迁移时还可以扩展原有应用程序功能,使用GPS、照相机等硬件,发挥手机独特的优势。
本文转自
飞雁 51CTO博客,原文链接:http://blog.51cto.com/felixyan/527298 ,如需转载请自行联系原作者