(3.5)HarmonyOS鸿蒙上下左右方向滑动

简介: (3.5)HarmonyOS鸿蒙上下左右方向滑动

需要获取按下时候的坐标和松开时候的坐标,并将两者进行比较。


24d167ecbf3b4485ac9185bd1a7969be.png


①MainAbilitySlice.java文件


可以根据使用情况做修改代码中判断处的限制偏差范围。


package com.example.yeman.slice;
import com.example.yeman.ResourceTable;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.Button;
import ohos.agp.components.Component;
import ohos.agp.components.DirectionalLayout;
import ohos.agp.components.Text;
import ohos.media.image.common.Position;
import ohos.multimodalinput.event.MmiPoint;
import ohos.multimodalinput.event.TouchEvent;
public class MainAbilitySlice extends AbilitySlice implements Component.TouchEventListener{
    float starX;
    float starY;
    float endX;
    float endY;
    Text txt;
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_main);
        //通过id找到布局对象(其也可以理解是一种组件)
        DirectionalLayout dl = (DirectionalLayout) findComponentById(ResourceTable.Id_dl);
        //通过id找到文本框组件
        txt = (Text) findComponentById(ResourceTable.Id_txt);
        //给整个布局添加滑动事件,当在整个布局上滑动时,就会不断调用本类中onTouchEvent方法
        dl.setTouchEventListener(this);
    }
    @Override
    public void onActive() {
        super.onActive();
    }
    @Override
    public void onForeground(Intent intent) {
        super.onForeground(intent);
    }
    @Override
    public boolean onTouchEvent(Component component, TouchEvent touchEvent) {
        //component表示滑动的哪个组件,布局也是一种组件,实际上这里示例就是在整个布局上进行的。
        //touchEvent表示动作对象(按下,滑动,抬起)。
        //获取当前手指对于屏幕进行的操作(按下,滑动,抬起)
        int action = touchEvent.getAction(); //1表示按下,2表示抬起,3表示滑动(移动)
        if (action == TouchEvent.PRIMARY_POINT_DOWN){
            MmiPoint position = touchEvent.getPointerPosition(0);
            starX = position.getX();
            starY = position.getY();
            txt.setText(starX + "--" + starY);
        }else if (action == TouchEvent.PRIMARY_POINT_UP){
            MmiPoint position = touchEvent.getPointerPosition(0);
            endX = position.getX();
            endY = position.getY();
            txt.setText(endX + "--" + endY);
            //Math.abs(starY - endY) < 100是做一个Y方向的限定范围,下面类似。
            if (starX > endX && Math.abs(starY - endY) < 100){
                txt.setText("左滑了");
            }else if (starX < endX && Math.abs(starY - endY) < 100){
                txt.setText("右滑了");
            }else if (starY > endY && Math.abs(starX - endX) < 100){
                txt.setText("上滑了");
            }else if (starY < endY && Math.abs(starX - endX) < 100){
                txt.setText("下滑了");
            }else txt.setText("无效滑动(请直一点!)");
        }else if (action == TouchEvent.POINT_MOVE){
            txt.setText("滑动中...");
        }
        return true;
    }
}


②ability _main.xml文件


<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayout
    ohos:id="$+id:dl"
    xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:height="match_parent"
    ohos:width="match_parent"
    ohos:alignment="center"
    ohos:orientation="vertical">
    <Text
        ohos:id="$+id:txt"
        ohos:height="match_content"
        ohos:width="match_content"
        ohos:text="这里是文本框"
        ohos:text_size="100"/>
</DirectionalLayout>



相关文章
|
2月前
|
编解码 视频直播 开发工具
|
2月前
|
IDE 开发工具 Windows
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之RowSplit容器组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之RowSplit容器组件
53 0
|
3月前
|
IDE API 开发工具
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Counter容器组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Counter容器组件
46 1
|
3月前
|
IDE 开发工具 Windows
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之ColumnSplit容器组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之ColumnSplit容器组件
40 0
|
3月前
|
IDE API 开发工具
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Column容器组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Column容器组件
52 0
|
1天前
|
Java 开发工具 Android开发
鸿蒙HarmonyOS 与 Android 的NDK有什么区别?
鸿蒙(HarmonyOS)和Android的NDK(Native Development Kit)是两个不同的概念,它们在设计理念、架构、开发方式和目标平台等方面存在着一些显著的不同。
4 0
|
2月前
|
IDE API 开发工具
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Scroll容器组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Scroll容器组件
117 0
|
3月前
|
IDE API 开发工具
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Row容器组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Row容器组件
34 1
|
3月前
|
IDE 开发工具 Windows
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之FlowItem容器组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之FlowItem容器组件
38 1
|
3月前
|
IDE API 开发工具
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Flex容器组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Flex容器组件
63 5

热门文章

最新文章