`

界面在手机和模拟器上显示的差异

    博客分类:
  • brew
阅读更多

高通告诫我们:程序一定要多多在手机上调试。

    刚入门时,觉得模拟器是个好东西,显示逼真,想调就调。逐渐地,我发现,在模拟器上调试好的程序,在手机上并不一定能按预计运行。
    反差最大的莫过于界面,第一次把程序拷到手机上,期望很大,也很自信,结果——惨不忍睹。

    以下是我给大家的一些建议:

    1.显示中文时,不要直接在屏幕上打印,把中文文字放在资源(bar)文件里。
    //在屏幕上直接打印中文,在手机上会变成乱码
    //资源文件便于修改,同时提高程序的可移植性
    //修改brx文件后,要重新编译生成新的bar

    2.显示文字时,不要固定行高,根据屏幕行高计算合适的显示行高。
    //不同的屏幕行高不一样,如果设为固定值,在有的屏幕上文字重叠,有的屏幕文字稀疏。显示行高设为屏幕行高时,是最密的显示,如果有需要,可以适当加宽
    //用IDISPLAY_GetFontMetrics得到屏幕行高

    3.显示非居左、非居右文字时,通过IDISPLAY_MeasureTextEx得到前段文字的长度,适当调整得到显示的起始位置。
    //通过IDISPLAY_DrawText中的x、y参数控制文字的显示位置。x是距屏幕右边的像素,y是本行的上边距离屏幕上边的像素
    //重要提示:IDISPLAY_DrawText函数在模拟器上和在手机上的返回值可能不一样!所以请多多调试!给一组数据:字符串“垂直速度:”(加粗)在模拟器上宽度为83像素,手机上是180像素。

    4.AEERect限定的区域里,即使没显示内容,也会盖住已显示的文字
    //帮助里说IDF_TEXT_TRANSPARENT可以避免覆盖,大家可以试试

    5.文字自动换行
    //每个应用都有说明、关于,所以自动换行肯定需要。
    代码如下:
    while ((totalCh > 0) && (*psz != NULL))
 {
     // 获取一行中可容纳字符数的信息
  pixelWidth = IDISPLAY_MeasureTextEx(pMe->m_pIDisplay, font, (AECHAR *) psz, -1, di.cxScreen - 5, &pnFits);
  IDISPLAY_DrawText(pMe->m_pIDisplay, AEE_FONT_NORMAL, psz, pnFits, 5, dy, 0, 0);
  psz += pnFits; // 将指针移到下一个要显示的段
  totalCh -= pnFits; // 减少仍需要显示的字符总数
  dy += charHeight; // 将下一行置于上一行的charHeight像素以下。
  IDISPLAY_Update(pMe->m_pIDisplay);
  if (totalCh < pnFits)
         pnFits = totalCh; // 如果总数小于 pnFits, 则调整 pnFits

 }

    6.AEERect中数字、字符串显示差异
    //在模拟器中,数字居左,字符串居中
    //在我们的手机上,数字数字居左,字符串居右。我对此无奈,还没找到控制的方法。

    显示与OEM有关,我遇到的问题不一定大家会遇到,仅供参考:) 

分享到:
评论
2 楼 咖啡舞者 2009-05-05  
这是创建的代码。
在设备上调的。
1 楼 咖啡舞者 2009-05-05  
有个问题请教
我使用ItextCtl创建实例后,在屏幕上看不到。
当我在屏幕上点击该位置时,该控件才显示出来,这是为何?

ITextCtl * ctl;
	int nErr = SUCCESS;
	AEERect rect;	 

	nErr = ISHELL_CreateInstance(pMe->a.m_pIShell,AEECLSID_TEXTCTL,(void**)&ctl);
	if(nErr!=SUCCESS)
	{
		return nErr;
	}
	ITEXTCTL_SetProperties(ctl,TP_FRAME|TP_PASSWORD );
	
	//SETAEERECT(&rect,0,20,pMe->DeviceInfo.cxScreen,12);
//	
rect.x = dis.x;  
	rect.y = dis.y;
	rect.dx = we.width;
	rect.dy = we.height;

	ITEXTCTL_SetRect(ctl,&rect);	
	ITEXTCTL_SetMaxSize(ctl,20);
	ITEXTCTL_SetInputMode(ctl,AEE_TM_NONE);
	ITEXTCTL_SetActive(ctl,FALSE);
	////ITEXTCTL_HandleEvent(ctl,EVT_PEN_DOWN,0,1);
	ITEXTCTL_Redraw(ctl);	

相关推荐

    Android真机界面的大小与MuMu模拟器运行出来的手机屏幕大小不一致问题的一个解决办法

    –最近在做毕业设计,作为一个新手遇到了这个屏幕大小...反过来用真机去调试界面布局完了以后却不能在模拟器上显示出令人满意的结果。 –我的解决办法是:取真机的屏幕截图一张,用电脑的画图软件获取原来屏幕大小的80

    手机模拟器

    手机模拟器是一种在个人计算机(PC)上运行的软件,它能够模拟移动设备,如智能手机的功能,让用户在电脑上执行原本为手机设计的程序或游戏,进行手机软件的测试。这种技术尤其对开发者和游戏玩家非常有用,因为它...

    iPhone iOS界面模拟器(flash)

    这款iPhone iOS界面模拟器基于Flash,意味着它可以在任何安装了Flash Player的设备上运行,包括Android手机、个人电脑等。通过模拟器,开发者和设计师可以无需物理设备就能预览iOS应用的用户界面,这对于快速迭代...

    手机模拟器2----手机顽童

    这款模拟器以其强大的功能和兼容性,为开发者和玩家提供了一个在电脑上运行和测试手机游戏的平台,无需实际在多款不同型号的手机上进行尝试。 J2ME是Java平台的一个子集,主要用于开发移动设备和嵌入式系统的应用...

    MRP模拟器—MTK手机MRP游戏电脑模拟器Simulator V1.RAR

    总的来说,"MRP模拟器—MTK手机MRP游戏电脑模拟器Simulator V1.RAR"提供了一个独特的平台,让玩家能在现代电脑上重温过去的手机游戏,同时也展示了软件模拟技术在兼容性和历史遗产保留方面的价值。对于熟悉MTK手机和...

    ProxN45 手机模拟器

    在移动应用开发领域,模拟器是开发者不可或缺的工具,它允许程序员在电脑上模拟手机环境,以便测试和调试应用程序。ProxN45手机模拟器就是这样一款专为开发者设计的软件,它使得在非实际设备上模拟手机功能成为可能...

    j2me 手机程序模拟器KEmulator

    它提供了编写和运行这些设备上应用程序的能力,尤其在功能手机时代,J2ME是开发手机游戏和应用的主要工具。在没有实际设备的情况下,开发者需要依赖模拟器进行程序的测试和调试,这就是KEmulator的用武之地。 ...

    KEmulator 模拟器 手机游戏 0.9.5

    KEmulator是一款功能强大的手机游戏模拟器,专为移植人员设计,它允许用户在个人电脑上运行和测试手机游戏,无需实际设备。这个特定版本,0.9.5,尽管是以英文界面为主,不直接支持中文,但其提供的内存查看功能为...

    Android 平台brew模拟器.zip

    在Android平台上,Brew模拟器是一个专为移动设备设计的软件开发环境,它允许开发者在Android设备上运行和测试基于Brew MP(Mobile Platform)的应用程序。Brew MP是一种操作系统,主要用于智能手机和平板电脑,提供...

    gba模拟器,电脑上的

    总的来说,GBA模拟器,尤其是VisualBoyAdvance1.8,为电脑用户提供了一种方便的方式,让他们能够在个人计算机上享受GBA游戏的乐趣,重温经典游戏,同时也为游戏开发者提供了调试和分析GBA游戏代码的工具。

    java手机模拟器

    KEmulator Lite 提供了一个与真实手机相似的界面和功能,使得开发者和普通用户可以方便地在电脑上查看和操作手机应用。 使用Java手机模拟器有以下几个主要优点: 1. **开发和调试**:对于Java应用开发者,尤其是...

    S60V3的FC模拟器和几个高分fc游戏.zip

    在S60V3平台上,GPFCE允许用户在手机上玩FC游戏,享受经典游戏的乐趣。 关于FC模拟器的使用,用户首先需要将FC游戏的ROM文件(通常为.nes格式)拷贝到手机的指定文件夹,然后通过GPFCE模拟器打开这些文件进行游戏。...

    安卓模拟器机型修改工具包

    4. **用户体验研究**:了解应用在不同设备上的用户体验,比如屏幕尺寸、分辨率变化对界面布局的影响。 5. **广告定向测试**:广告平台可能根据设备信息投放特定广告,修改机型可以帮助开发者验证广告投放策略。 ...

    FC模拟器 经典模拟器

    FC模拟器,全称为Family Computer Emulator,是用于在现代计算机、智能手机和平板电脑上运行经典FC游戏的软件。FC,又称红白机,是任天堂公司在1983年推出的一款家用游戏机,它在全球范围内引领了家用游戏机的热潮,...

    java模拟器

    在Java模拟器的场景中,用于登录手机QQ表明它能够支持与移动设备类似的网络通信和界面渲染。而运行Java游戏则要求模拟器具备良好的图形处理能力,以及兼容游戏所需的各种Java库和API。尽管可能有些局限性,但Java...

    华为交换机模拟器 交换机模拟器下载 HW-routesim

    这个模拟器允许用户在不实际操作硬件设备的情况下,熟悉和掌握华为交换机的配置和管理,对于网络工程师和学生来说是极具价值的学习资源。 一、华为交换机模拟器介绍 华为交换机模拟器主要功能包括模拟华为网络设备...

    WINCE模拟器内附安装教程

    **Windows CE 模拟器详解及安装教程** Windows CE(简称WinCE...记住,模拟器虽然能提供近似真实的WinCE环境,但在某些特定硬件或驱动支持方面可能存在差异,因此,最终的软件发布前,仍需在真实设备上进行全面测试。

    WinCE5.0模拟器(win7)

    5. 用户界面测试:在模拟器上预览和测试用户界面,确保其在WinCE5.0系统上的表现符合预期。 需要注意的是,尽管模拟器提供了很多便利,但其性能可能会受到主机系统资源的限制,与实际硬件运行可能存在差异。因此,...

    S7-200模拟器使用说明b24.pdf

    本模拟器可以运行在个人计算机上,提供了一个安全的环境用于测试和学习,但开发者明确禁止将其用于商业目的或盈利。 在具体使用上,本模拟器提供了以下功能与知识点: 1. 软件概述:包含适用版本、重要更新、设计...

    Android 模拟器skin-WVGA-L-HTC-TouchHD

    纵横比是屏幕宽度与高度的比例,对于用户界面设计和布局测试至关重要,因为它会影响应用在不同屏幕尺寸上的显示效果。 HTC Touch HD是一款经典的智能手机,配备了4.3英寸的大屏幕和WVGA分辨率。模拟器中包含这个...

Global site tag (gtag.js) - Google Analytics