更多内容请访问:与华为官方共同建立的鸿蒙技术社区https://harmonyos.51cto.com目录1.滑动事件三动作2。实现案例:按下、移动或松开修改文本内容3.按下、滑动、松开参数说明4.验证按下、移动、松开的过程,代码会继续调用该类中的onTouchEvent方法1。滑动事件三个动作的接口名称:TouchEventListener滑动事件中有三个动作:按住、移动、抬起。PRIMARY_POINT_DOWN:钥匙未释放。POINT_MOVE:移动。PRIMARY_POINT_UP:向上。方法返回值:true表示继续执行后面的动作。false表示后面的动作不会继续。它涉及以下三个动作。根据用户的按压位置和松下的位置,可以区分用户是上滑、下滑、左滑还是右滑。例如:可以识别用户正在向右滑动(简称:rightswipe)例如:可以识别用户正在向下滑动(简称:sliding)2.实现案例:按下,移动或释放到修改文本内容因为要在整个屏幕上滑动,所以给最外层布局DirectionalLayout设置一个滑动事件,添加一个idPress,moveorlift修改文本内容新建项目:ListenerApplication4代码实现ability_main使用Text默认生成的text内容,在此基础上分别在DirectionalLayout布局和Text组件中添加idMainAbilitySlice使用当前类作为实现类接口的方式编写packagecom.xdr630.listenerapplication.slice;importcom.xdr630.listenerapplication.ResourceTable;importohos.aafwk.ability.AbilitySlice;importohos.aafwk.content.Intent;importohos.agp.components.Component;importohos.agp.components.DirectionalLayout;importohos.agp。components.Text;importohos.multimodalinput.event.TouchEvent;publicclassMainAbilitySliceextendsAbilitySliceimplementsComponent.TouchEventListener{Texttext1=null;@OverridepublicvoidonStart(Intentintent){super.onStart(intent);super.setUIContent(ResourceTable1.Layout_main首先找到整个layout/ability/对象DirectionalLayoutdl=(DirectionalLayout)findComponentById(ResourceTable.Id_dl);text1=(Text)findComponentById(ResourceTable.Id_text1);//2.给整个布局添加滑动事件//当我们在整个布局滑动时,这个会调用onTouchEvent类中的方法//在按下、移动、释放的过程中,代码会不断调用本类中的onTouchEvent方法dl.setTouchEventListener(this);}@OverridepublicvoidonActive(){super.onActive();}@OverridepublicvoidonForeground(Intentintent){super.onForeground(intent);}@OverridepublicbooleanonTouchEvent(Componentcomponent,TouchEventtouchEvent){//参数1:component表示滑动组件(layout也是一个组件,所以component也可以用来表示布局对象)//其实此时代表的是DirectionalLayout布局对象,和thislayout覆盖整个//屏幕的参数2:touchEvent代表动作对象(press,slide,lift)//获取当前手指操作屏幕(press,slide,lift)intaction=touchEvent.getAction();//1:表示按下操作//2:表示释放操作//3.表示滑动/移动操作if(action==TouchEvent.PRIMARY_POINT_DOWN){//编写按下时需要运行的代码即可text1.setText("pressDown");}elseif(action==TouchEvent.POINT_MOVE){//移动或滑动text1.setText("Move");}elseif(action==TouchEvent.PRIMARY_POINT_UP){//释放或抬起text1.setText("Release");}returntrue;}}Run:Press:Move:释放:3、按下、滑动、释放参数说明,可以看到数字1、2、3代表PRIMARY_POINT_DOWN(按下)、PRIMARY_POINT_UP(释放)、POINT_MOVE(移动),所以上面代码的参数可以也可以直接用数字代替,但是为了更直观的表达,建议使用参数,一目了然例如:用数字表示if(action==1){//只写按下时需要运行的代码text1.setText("press");}elseif(action==3){//移动或slidetext1.setText("Move");}elseif(action==2){//释放或抬起text1.setText("Release");}4.验证按下、移动、释放的过程,代码会继续调用这个类中的onTouchEvent方法在上面代码的基础上,定义成员变量counterintcount=0onTouchEvent方法被调用一次时,会添加一次。每次按下时把count放在后面,是第一次调用,count应该为1。当鼠标连续移动时,会不断调用onTouchEvent方法,count会递增。释放的时候会调用一次,在之前的值的基础上加上计数。1因此,经验证:在按下、移动、松开的过程中,代码会不断调用该类中的onTouchEvent方法。更多信息请访问:Harmonyos.51cto.com,与华为官方合作打造的鸿蒙技术社区