找回密码
 注册
搜索
查看: 1499|回复: 12

[综合资料] 滑动菜单及滑动解锁技术分析

[复制链接]
发表于 2009-3-9 19:46:01 | 显示全部楼层 |阅读模式
自从IPHONE横空出世以来,可以说是在手机界掀起了一场洪洪烈烈的触屏革命;
这是以触屏的更广泛应用为前体,触屏的特效演示为热点,越来越多的创意和点子开始集中在这个领域。触屏游戏,触屏画笔,滑动菜单,滑动解锁等功能彻底颠覆了以往手机触屏只用于点击和手写的观念。在这个只有几寸的屏幕上,勤奋的大脑在不停的开拓,灵活的手指在表演着令人惊诧的舞蹈。
这段时间经常遇到有朋友问了滑动菜单和滑动解锁应该怎么设计,刚开始没怎么在意,后来一次网上一查,发现触屏已经成了主流。如何在有限的屏幕上开发出更利于操作,更吸引人眼球的效果,已经成了手机UI设计的重中之重。周末没事,就找了一些手机的图片看了看,研究了一下滑动菜单的特效。其实简单的来说,该特效就是为触屏添加一个mmi_pen_register_move_handler函数,剩下的就是根据触笔MOVE的X,Y座标,调整屏上被移动图片或者图层的位置座标,重新刷到屏上。

由于本人主要是研究MTK平台,所以其他的平台API也不了解,不过大致算法应该差不多。
做滑动菜单大约需要几方面的知识储备:
一是MTK的层概念,如果不使用层,在滑动的过程中,图像处理时频繁的贴图将会很大的影响显示效果,提前贴好在层里,需要时刷到屏上无疑是最好的方法,另外如果不使用层,复杂的组合图形,图片的堆叠了维护十分繁琐。
主要用到以下API,
gdi_layer_get_blt_layer_ext
用来获取当前窗口有哪些层,对于复杂的如IDLE,CAM,播放器等窗口,他们原本就是不一层的,如果不知道窗口有几个层,盲目加层,肯定出问题,有朋友合并层时显示不正确,有很大可能就是漏了哪些层
gdi_layer_multi_layer_enable
打开多层可用,有些窗口可能已经打开了,退出窗口时要调用gdi_layer_multi_layer_disable
然后是创建层:gdi_layer_create
创建了之后要激活,这样添加上的图片才是在这个层中,否则是在当前激活层中:gdi_layer_set_active

清理层,设置层的通透色
gdi_layer_clear
gdi_layer_set_source_key

获得基础层,该层在进入EntryNewScreen时就已经激活,但如果你又激活了别的层,处理完了别的层之后,仍然要把他再次激活。
gdi_layer_get_base_handle

还有一个函数是指定要合并的层,这样有一些层可以提前画好,不合并,需要的时候再合并,如果不合并,是不能显示的:
gdi_layer_set_blt_layer
最后别忘了刷新层,要不仍然无法显示,有好几个函数都有这个功能,
gui_BLT_double_buffer
gdi_layer_blt
gdi_layer_blt_previous
当然你要做更复杂的,下面的函数也是不可少的
gdi_layer_lock_frame_buffer
gdi_layer_unlock_frame_buffer
gdi_layer_create_using_outside_memory
OslMalloc
Oslfree

二是MTK的触屏API,
这个最简单了,只要有三个函数就搞定了,
mmi_pen_register_down_handler
mmi_pen_register_move_handler
mmi_pen_register_up_handler
三是图像处理的API,
这部分API相信大家都知道,太简单了,也太多了,有时以至于我们都不知道该用哪个好,我一般设计都使用GDI开头的一类API,需要注意的是,好像在二五平台上,在做贴图的特效时,PNG图片似乎会出问题,显示乱屏了,把背景也通透了等等,因此这部分图片最好使用BMP,另外PNG需要解码,有时在处理高效率的图片特效时,也有有几毫秒到几十毫秒的的延迟。虽然PNG似乎表现更丰富,不容易锯齿,还能直接通透,但特效使用上好像确实不如BMP那样方便。
 楼主| 发表于 2009-3-10 21:20:27 | 显示全部楼层
呵呵,没人顶,自己顶一下,赚个R币
点评回复

使用道具 举报

发表于 2009-3-11 14:39:23 | 显示全部楼层
DING
点评回复

使用道具 举报

发表于 2009-3-13 16:30:38 | 显示全部楼层
luguo
点评回复

使用道具 举报

发表于 2009-8-11 19:21:56 | 显示全部楼层
顶!关于层的应用只是看别人写过,还没亲手写过。好好学习一下
点评回复

使用道具 举报

发表于 2010-4-18 19:08:27 | 显示全部楼层
顶下,学习了!!!!
点评回复

使用道具 举报

发表于 2010-5-13 15:26:57 | 显示全部楼层
顶下
学习了
点评回复

使用道具 举报

发表于 2010-8-5 17:22:31 | 显示全部楼层
楼主贴点儿代码上来啊!
点评回复

使用道具 举报

发表于 2010-10-27 09:31:40 | 显示全部楼层
总结的比较透彻。
点评回复

使用道具 举报

发表于 2010-10-27 14:57:42 | 显示全部楼层
谢谢分享!
点评回复

使用道具 举报

发表于 2010-11-12 17:09:37 | 显示全部楼层
学习一下!
点评回复

使用道具 举报

发表于 2010-11-24 13:32:03 | 显示全部楼层
不错值得学习。
点评回复

使用道具 举报

发表于 2013-12-12 12:50:59 | 显示全部楼层
不错值得学习。
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-6-28 13:30 , Processed in 0.066572 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表