鸿蒙学习笔记之滑动方向(十)

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:获取绝对值

 分享不易,都观看到这里了,还不点赞收藏嘛!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

✎﹏ℳ๓敬坤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值