`
izuoyan
  • 浏览: 9229037 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

滑动菜单及滑动解锁技术分析

阅读更多

自从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那样方便。

分享到:
评论

相关推荐

    滑动解锁及滑动菜单.doc

    滑动解锁和滑动菜单是智能手机用户界面中的关键交互元素,尤其在触屏设备中扮演着重要角色。本文将深入探讨MTK平台下这两种功能的实现原理和代码分析。 首先,滑动解锁功能的设计旨在提供一种安全且直观的解锁方式...

    手滑源码DEMO,可用与手触屏,效果很赞

    这种技术广泛应用于各种应用和游戏,如滚动列表、滑动解锁、拖放元素等。源文件包含实现这一功能的代码逻辑,开发者可以深入研究并根据自己的需求进行定制。 在移动应用开发中,手势识别是提升用户体验的关键因素之...

    电信设备-基于眼睛控制显示层切换的方法和移动终端.zip

    在现代科技发展的浪潮中,人机交互方式不断创新,从传统的按键操作到触屏滑动,再到语音识别,现在我们正逐渐迈向更为直观且自然的眼球追踪技术。本文将深入探讨一种基于眼睛控制的显示层切换方法及其在移动终端中的...

    SunplusIT 教程 无线鼠标故障排除 对码

    **原因分析及解决方案:** 1. **电量不足**:检查电池电量是否足够。如果电量低,请更换新电池。 2. **电池安装错误或接触不良**:确保按照鼠标内部电池仓内的正负极指示正确安装电池,并确保电池与金属触点充分...

    手机UI系统功能界面

    在手机上,UI设计不仅包括主屏幕、应用图标、通知中心,还包括设置菜单、锁屏界面、多任务管理器等多个方面。 首先,手机UI的设计需要考虑到易用性。易用性是指用户能够快速理解和掌握系统的操作方式,包括直观的...

    PROE仿真与动画

    - **Mechanism Design(机械设计)**:主要用于进行运动仿真,通过对机构的运动副(如铰链、滑动等)进行定义,以及创建伺服电机来驱动机构运动,实现对机构运动特性的模拟与分析。例如,可以测量机构的位置、速度、...

    安卓开发-安卓飞机游戏.zip

    3. **UI设计**:游戏界面通常由多个布局构成,如主菜单、游戏画面、得分屏幕等。可以使用XML来定义这些布局,结合自定义View或SurfaceView来实现动态的游戏画面。Android提供的Canvas类用于在屏幕上绘制图形。 4. *...

    SystemUI 源码上传给大家使用

    SystemUI源码的分析对于理解Android系统的运行机制、定制个性化系统或者开发系统级别的应用有着非常重要的意义。在这个压缩包中,你将找到SystemUI的相关源代码,这将是你深入学习Android系统UI设计的宝贵资源。 ...

    很不错的45款手机游戏源码

    4. **图形与渲染**:源码中会有关于2D和3D图形处理的代码,包括纹理贴图、光照、阴影、动画等,对于理解图形学和渲染技术非常有帮助。 5. **网络编程**:多人在线游戏会涉及到网络编程,如TCP/IP通信协议、...

    Allegro PCB Layout速电路板设计I

    1. **市场需求分析**:收集并分析目标市场的需求信息。 2. **产品设计**:根据市场需求进行产品概念设计,并进行电路原理图设计。 3. **PCB设计**:完成电路板布局设计,包括元件放置、布线等步骤。 4. **样品制作与...

Global site tag (gtag.js) - Google Analytics