Symbian S60 5th 实现拖拽效果

Symbian S60从第五版开始支持触摸屏。从SDK中可知,触摸事件是由控件接受处理,开发者需要继承CCoeControl:HandlePointerEventL()来处理触摸事件。一个简单使用此函数的例子如下(注意在MMP文件中需加入"LIBRARY cone.lib"):

 

 

有了这个函数,我们按照自己的想法来设计很多事件,比如触摸动作(触摸手势),关于这个的详细讨论可以看Nokia Wiki

 

下面介绍一个基于这个函数实现的拖拽效果。

 

首先,要使得程序能够接收到EDrag事件,需要在CSampleContainer(继承自CCoeControl)的构造函数中调用EnableDragEvents()。

 

其次,弄清楚S60 5th对EButton1Down, EButton1Up, EDrag 的响应方式。当我们在手机屏幕上拖拽时,首先,当触摸笔或手指按到屏幕上,EButton1Down事件会被响应,然后在拖拽过程中会周期性的响应EDrag事件,这个周期可以不用考虑(需要详细了解的可以查看SDK中SetMinInterDragInterval() 函数)。在离开屏幕时又会相应EButton1Up事件。据此响应事件,可以实现拖拽的效果。

 

下面是一个对超过屏幕显示高度的长文本显示实现上下拖拽的简单示例:

iYbase是偏移量,也就是首行文字的纵坐标。Draw()函数根据这个坐标在屏幕上绘制文本。iDeltaY记录上一次EDrag响应时触摸笔坐标与初始触摸笔坐标的纵向差,以此计算新的iYbase。

 

现在,屏幕上的文字就随着你的手指上下移动了。当然稍加修改即可实现任意方向的拖拽。

 

 这篇文章写的比较简单,修改后的文章在这里,应该比较详细了,并且加上了一个示例。示例代码下载地址:http://yctx.me/file/DragExample.zip

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值