创建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)
上一篇 2022年3月11日 下午7:00
下一篇 2022年3月11日 下午7:35


相关推荐

  • samba文件共享服务配置过程_linuxsmb文件共享

    samba文件共享服务配置过程_linuxsmb文件共享samba文件共享服务

    2022年4月21日
    62
  • TF-IDF算法介绍及实现「建议收藏」

    TF-IDF算法介绍及实现「建议收藏」目录1、TF-IDF算法介绍(1)TF是词频(TermFrequency)(2)IDF是逆向文件频率(InverseDocumentFrequency)(3)TF-IDF实际上是:TF*IDF2、TF-IDF应用3、Python3实现TF-IDF算法4、NLTK实现TF-IDF算法5、Sklearn实现TF-IDF算法6、Jieba实现TF-IDF算…

    2022年6月12日
    65
  • VPC网络图解

    VPC网络图解主题 VPC 网络 VPC 网络您可以在 QingCloud 环境内预配置出一个专属的大型网络 VPC 网络 在 VPC 网络内 您可以自定义 IP 地址范围 创建子网 并在子网内创建主机 数据库 大数据等各种云资源 一个 VPC 网络可以连接 254 个子网 Vxnet 且最多可以容纳 60 000 台虚拟主机 通过分布式路由器和虚拟直连技术 QingCloud 的 VPC 网络可以在

    2026年3月16日
    2
  • 如何设置pycharm字体大小_pycharm设置字体颜色

    如何设置pycharm字体大小_pycharm设置字体颜色pycharm是很好的一个IDE,在windows下,和macOS下,都能很好的运行。唯一缺点是启动慢。默认字体太小,在mac下,需要瞪大24K氪金狗眼才能看清。为了保护好眼睛,我们需要把字体调整大一些: 步骤:Settings–>Editor–>ColorsScheme–>ColorSchemeFont然后在size那里调整。Linespa…

    2022年8月29日
    4
  • python 优雅退出_Python学习教程:Python 使用 backoff 更优雅的实现轮询

    python 优雅退出_Python学习教程:Python 使用 backoff 更优雅的实现轮询我们经常在开发中会遇到这样一种场景,即轮循操作。今天介绍一个Python库,用于更方便的达到轮循的效果——backoff。Python学习教程:Python使用backoff更优雅的实现轮询backoff模块简介及安装这个模块主要提供了是一个装饰器,用于装饰函数,使得它在遇到某些条件时会重试(即反复执行被装饰的函数)。通常适用于我们在获取一些不可靠资源,比如会间歇性故障的资源等。此外,装饰…

    2022年6月15日
    38
  • phpMyAdmin安装详解

    phpMyAdmin安装详解linux下1、下载phpMyAdmin包https://files.phpmyadmin.net/phpMyAdmin/5.1.1/phpMyAdmin-5.1.1-all-languages.zip2、上传至服务器,并解压到web服务目录下修改名称[root@localhosthtdocs]#mvphpMyAdmin-5.1.1-all-languages.zipphpMyAdmin3、修改config.default.php文件(目录:phpMyAdmin/libraries)

    2022年5月24日
    44

发表回复

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

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