Tips:
当我们学习滑动三个动作,那我们通过滑动还可以做什么功能呢?
常见的功能就是左右山下滑动,我们如何实现这个功能呢?
1.获取我们第一次按下时的x和y坐标
2.获取松开时的x和y坐标
3.通过对比坐标,判断滑动方向
话不多说,直接上事件代码了:
package com.example.mydemoslide.slice;
import com.example.mydemoslide.ResourceTable;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.Component;
import ohos.agp.components.DirectionalLayout;
import ohos.agp.components.Text;
import ohos.multimodalinput.event.MmiPoint;
import ohos.multimodalinput.event.TouchEvent;
public class MainAbilitySlice extends AbilitySlice implements Component.TouchEventListener{
private Text txt;
@Override
public void onStart(Intent intent) {
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_ability_main);
//找到txt组件
txt= (Text) findComponentById(ResourceTable.Id_text_helloworld);
//找到我们的表示滑动的组件,因为我们实在整个页面滑动,所以就直接找到DirectionalLayout组件
DirectionalLayout view = (DirectionalLayout) findComponentById(ResourceTable.Id_view);
//给我们的组件绑定滑动的事件
view.setTouchEventListener(this);
}
@Override
public void onActive() {
super.onActive();
}
@Override
public void onForeground(Intent intent) {
super.onForeground(intent);
}
//定义两个保存坐标的变量,因为获取的变量是带小数的,所以用float数据类型
float startX;
float startY;
@Override
public boolean onTouchEvent(Component component, TouchEvent touchEvent) {
int touState = touchEvent.getAction();
//在按下事件获取第一次的x和y坐标
if(touState==touchEvent.PRIMARY_POINT_DOWN){
txt.setText("按下了,松开手指获取滑动状态");
MmiPoint getPoint = touchEvent.getPointerPosition(0);
startX=getPoint.getX();
startY=getPoint.getY();
}
//在松开事件中再次获取我们x和y坐标和点下的坐标进行对比,判断是左滑还是右滑,上滑还是下滑
else if(touState==touchEvent.PRIMARY_POINT_UP){
MmiPoint getPoint = touchEvent.getPointerPosition(0);
float endX=getPoint.getX();
float endY=getPoint.getY();
//根据对比xy坐标进行判断滑动方向
if(startX>endX && Math.abs(endY-startY)<100){
txt.setText("左滑了");
}
else if(startX<endX && Math.abs(endY-startY)<100){
txt.setText("右滑了");
}
else if(startY<endY && Math.abs(endX-startX)<100){
txt.setText("上滑了");
}
else if(startY>endY && Math.abs(endX-startX)<100){
txt.setText("下滑了");
}
else{
txt.setText("失效了");
}
}
return true;
}
}
点击[https://download.csdn.net/download/qq_44291585/53359028] 下载源代码
知识点:
1.getPointerPosition():在事件中的触摸控制或轨迹跟踪期间,获取指针索引相对于偏移位置的 x 和 y 坐标
2.getX和getY:获取指针索引的X和Y坐标
3.Math.abs:获取绝对值
分享不易,都观看到这里了,还不点赞收藏嘛!