创建Windows Mobile上兼容性好的UI 程序[通俗易懂]

创建Windows Mobile上兼容性好的UI 程序

大家好,又见面了,我是全栈君。

创建Windows Mobile上兼容性好的UI 程序[通俗易懂]

 

    看看上面这个Emulator的截图吧,有WM 2003se5.06.0的,有pocket PCsmartphoneclassicprofessional的,有英文的,也有中文的,分辨率、DPI都各有区别。在这么多眼花缭乱的WM平台上开发应用程序,UI的设计,特别是compatibleUI策略,是很重要的。之前的Docking and Anchoring Controls on Windows Mobile也是其中一点。在MSDN上看到了这个方面比较有指导意义的文章Create Compatible User Interfaces,觉得有必要和大家共同探讨一下。

1. 通用UI策略

l  不要在编写代码的时候将屏幕信息设定死,取而代之的是使用GetSystemMetrics or GetClientRect来获取屏幕当前的size。同样,在托管代码中,使用FormWidthHeight属性。

l  处理Resize事件。在设备加载程序、动态加载界面或者改变屏幕方向的时候,我们要考Form的宽度与高度等信息。

l  使用单独的控件。如果有可能的话,尽量使用单独的控件来覆盖整个屏幕,例如ListView或者TreeView

l  控件重新布局。屏幕从portrait模式改变到landscape模式,或者从landscape模式改变到portrait模式时,我们要考虑改变控件的布局。当然,最简单的方法就是使用Anchor and Dock属性。下图1就展示了这个微妙的差别:

创建Windows Mobile上兼容性好的UI 程序[通俗易懂]

1:控件使用Anchor and Dock属性的差别

如果我们进行native code开发,就可以参考MSDN上的Introducing Screenlib来完成。

l  测试的时候,尽量使用较多的Emulator,并且要在portrait模式和landscape模式间切换,来考验我们写的应用程序性能。

2. 字体和字号

使用SHGetUIMetrics函数来检测用户选择的字体大小,并且在应用程序中使用相同的字体,以使用户获得一致的体验。应用程序可以监听SH_UIMETRIC_CHANGE消息来获得用户改变默认设置的事件。

3. 用户界面的颜色

所有的Form控件都会适应当前的主题(Theme),当然,如果我们使用GDI来重绘的话,最好得到当前系统使用的主题信息,然后对控件使用一致的策略。

4. Soft Key策略

    一般来说,左边的Soft Key是执行单条常用的命令,而非弹出一个菜单。右边的Soft Key一般是弹出菜单,并且将最常用的选项放在第一行,进行高亮显示。同时,避免使用多于两级的子菜单。

5. 程序图标

    和PC的应用程序不同,Windows Mobile使用不同大小的Icon。一般说来,我们在资源中包含不同分辨率下的程序图标,并且在程序运行的时候来检测,然后决定加载项。可以参考windows mobile blog: Which icon sizes should I use in my application?Fox23Blog上也说明了这点。

6. 避免使用位图

    由于windows mobile设备的屏幕大小、分辨率和形状等各不相同,所以会导致图像显示效果的不同。同一张位图在“96 DPI, 320×240”和“192 DPI, 480×480”的机子上,显示效果如下图2所示:

创建Windows Mobile上兼容性好的UI 程序[通俗易懂]

2:同一张位图在不同分辨率屏幕上的效果

    可以看到,在高分辨率下,同一张位图并不适合屏幕。

 

参考文献:Create Compatible User Interfaces/Introducing ScreenlibWhich icon sizes should I use in my application?



本文转自施炯博客园博客,原文链接:http://www.cnblogs.com/dearsj001/archive/2008/12/31/1366127.html,如需转载请自行联系原作者

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107984.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C++线程池实现_java线程池状态

    C++线程池实现_java线程池状态在计算机程序中,线程是一种很重要的资源,使用的恰当可以极大的提高程序的效率,也就是多线程的使用,但是多线程会让应用程序变得异常复杂,会占用大量的系统资源。就像QQ表情一样,每一个QQ表情的闪动都需要构建一个线程,如果用户使用了大量的表情(GIF),将会有多少个线程在运行,系统的性能将大大减少,甚至导致死机。在这种情况下,多线程变得不太合适了,那么什么机制适用于这种情况下呢,这就是线程池。通常情

    2022年9月25日
    1
  • linux安装windows系统_deepin安装wine

    linux安装windows系统_deepin安装wine一、安装1.参考网站:https://www.jianshu.com/p/809c0de6fc31https://github.com/askme765cs/Wine-QQ-TIM2.步骤:先下载WineQQ压缩包:wineQQ9.0.3_23729.tar.xz$sudoadd-apt-repositoryppa:wine/wine-builds$sudoapt-get…

    2025年9月20日
    7
  • C语言system()函数的用法[通俗易懂]

    C语言system()函数的用法[通俗易懂]C语言system()函数的用法1.函数简介C语言中,system函数可以用于调用一些DOS命令,比如system(“pause”)可以卡主系统控制台,而另一个常用的system(“cls”)为清屏命令,等于在DOS上使用cls命令。2.函数支持库及原型(1)函数原型intsystem(char*command);(2)函数支持库:stdlib.h3.函数返回值(1)=-1:出现…

    2022年9月17日
    3
  • 抗渗等级p6是什么意思_混凝土p6是什么意思「建议收藏」

    抗渗等级p6是什么意思_混凝土p6是什么意思「建议收藏」展开全部40是混凝土的强度等62616964757a686964616fe58685e5aeb931333431356664级,P6是抗渗混凝土按抗渗压力。抗渗混凝土按抗渗压力不同分为P6、P8、P10、P12和大于P12共5个等级。抗渗混凝土通过提高混凝土的密实度,改善孔隙结构,从而减少渗透通道,提高抗渗性。混凝土按标准抗压强度(以边长为150mm的立方体为标准试件,在标准养护条件下养护28天,…

    2022年8月10日
    8
  • jquery validation engine ajax验证,jQuery Validation Engine 表单验证「建议收藏」

    jquery validation engine ajax验证,jQuery Validation Engine 表单验证「建议收藏」名称示例说明requiredvalidate[required]表示必填项groupRequired[string]validate[groupRequired[grp]]在验证组为grp的群组,中至少输入或选择一项condRequired[string]validate[condRequired[ids]]当ids的某个控件不为空时,那么该控件也为必填项。可以依赖多项,如:validat…

    2022年10月3日
    3
  • 【Github教程】史上最全github用法:github入门到精通

    【Github教程】史上最全github用法:github入门到精通

    2021年11月29日
    55

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号