网站大量收购独家精品文档,联系QQ:2885784924

MTK的层函数.docVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MTK的层函数.doc

MTK一些有用的层函数 MTK, 函数 MTK的层在窗口设计中应用十分广泛,对于UI来说,没有一个窗口不是由层构成的,最基本的窗口至少也是在基层上设计的。以至于许多时候,如果对层不甚了解,连阅读代码有时也会遇到困难。我曾经写过一些有关层的使用的基础知识,由于有关这方面资料很少,许多时候只能在模拟器上打断点自己慢慢研究。 层可以在模拟器中调试,在模拟器上的TOOL菜单中的Info Monitor功能窗口,可以看到当前窗口由哪些层和各个层显示的内容,但不包括你虽然创建了,但没有调用函数gdi_layer_blt或者与他gdi_layer_blt相类似函数刷到窗口上的层。 处理PNG有关的函数 gdi_push_and_set_alpha_blending_source_layer gdi_pop_and_set_alpha_blending_source_layer gdi_set_alpha_blending_source_layer gdi_get_alpha_blending_source_layer 复制代码 这一组函数是在层上绘制PNG图片时使用,是PNG函数的专用函数,可以有效还原PNG图片的效果,前两个函数是成对使用,后一个函数作用同前两个,但使用上更自由一些,如果超过两个层,每个层都要画PNG,无疑使用gdi_set_alpha_blending_source_layer更加方便。最后一个是获取BLENDING层。 设置层的位置 gdi_layer_set_position 复制代码 如果层上的数据是经过十分复杂的运算过程得出来的,比如要在IDLE上显示一个可以使用手指移动的农历是日历,这时就可以在层上画好要显示的数据,通话移动层的位置实现移动效果,要比每次重绘日历要快捷的多。 合并到BASE层 gdi_layer_flatten_previous_to_base 复制代码 类似的函数还有 gdi_layer_flatten 复制代码 前者是把当前窗口数据合并到基层,后者是把指定的层合的激活层上,该函数常常在退出窗口时使用,如果你见有些窗口在弹出对话框时该窗口背景突然消失,那大约就是因为未使用该函数的原因。因为MTK的很多窗口都不是单一层,更关键的是在创建新窗口时有时会释放老窗口的层资源,导到在老窗口非基层的显示数据丢失。该函数使用我们可以使用超过四个层来创建更为复杂的效果。 添加DM层 dm_add_blt_layer 复制代码 有时你创建了层,激活了层,在层上也绘上了图片,也调用刷屏函数了,但你总是看不到屏上显示你的层,在模拟器中的Info Monitor窗口也看不到你的层,有时是你的层闪了一下就没影了,这时你就要研究dm_redraw_category_screen了,该函数做为大部分窗口的刷新函数,当窗口有变化时,就会执行该函数,而该函数中有一段类似如下的函数调用: gdi_layer_blt( dm_layers[0], dm_layers[1], dm_layers[2], dm_layers[3], dm_cat_scr_info.x1, dm_cat_scr_info.y1, dm_cat_scr_info.x2 - dm_cat_scr_info.x1 - 1, dm_cat_scr_info.y2 - dm_cat_scr_info.y1 - 1); 复制代码 该调用会重新刷屏,很遗憾的是,你新创建的层不在数组dm_layers中,也就不在他刷新的范围内。要么调用dm_add_blt_layer把你的层加入,要么在dm_redraw_category_screen之后再把你自己的层刷到屏上。 使用外部内存创建层 med_alloc_ext_mem 复制代码 当然类似函数也有很多,如 mmi_frm_scrmem_alloc 复制代码 确切的说,这两个函数都不能算是LAYER的函数,但如果你要使用gdi_layer_create_using_outside_memory创建层,却少不了这两个函数。在这两个函数中,我们常常调用med_alloc_ext_mem来分配内存,是因为该函数能提供大约400K左右内存可供调用,而mmi_frm_scrmem_alloc可以提供200~300K内存可供调用。但随着MTK手机沦为SP赚钱工具后,使用med_alloc_ext_mem分配内存越来越不安全。在之前的一次设计中,出了问题,多亏公司一高手指点,才消灭了这一处使用的隐患。 保存层到文件 gdi_layer_save_jpeg_file gdi_layer_save_pbm_file gdi_layer_save_bmp_file 复制代码 还有一类函数,设计窗口时可以处理

文档评论(0)

000 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档