(3.4)HarmonyOS鸿蒙滑动事件三个动作

简介: (3.4)HarmonyOS鸿蒙滑动事件三个动作

接口名:TouchEventListener


滑动事件里面分为三个动作:按下,移动,抬起

PRIMARY_POINT_DOWN:按下

POINT_MOVE:移动

PRIMARY_POINT_UP:抬起


手机坐标:

手机左上角的点为原点。向右为X轴。向下为Y轴。垂直于屏幕向上为Z轴。


方法返回值:

true表示继续执行后面的动作

false表示不会继续执行后面的动作


跟单击事件类似,滑动事件也有4种写法,这里采用当前类作为实现类这种写法,其他写法可以参见《单击事件的4种写法》。


①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.multimodalinput.event.TouchEvent;
public class MainAbilitySlice extends AbilitySlice implements Component.TouchEventListener{
    Text txt;
    int count;
    @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表示动作对象(按下,滑动,抬起)。
        count++; //可以用来记录一下该方法被调用次数
        //获取当前手指对于屏幕进行的操作(按下,滑动,抬起)
        int action = touchEvent.getAction(); //1表示按下,2表示抬起,3表示滑动(移动)
        if (action == TouchEvent.PRIMARY_POINT_DOWN){
            txt.setText("按下" + count);
        }else if (action == TouchEvent.PRIMARY_POINT_UP){
            txt.setText("抬起" + count);
        }else if (action == TouchEvent.POINT_MOVE){
            txt.setText("滑动" + count);
        }
        return true; //返回值为false的话,调用一次后将不会再调用,即只能作用“按下”这个动作
    }
}


②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>


相关文章
|
1月前
|
编解码 视频直播 开发工具
|
17天前
|
安全 调度
鸿蒙HarmonyOS实战-Stage模型(线程模型)
本文介绍了线程作为操作系统调度的最小单位,是进程中的执行流,具有轻量级、并发执行、共享资源、通信简单和上下文切换等特点。线程分为用户线程和内核线程,其中内核线程由操作系统管理,而用户线程由应用程序控制。线程用于提高程序性能和响应速度,尤其适合多任务并发处理。在HarmonyOS中,每个应用有主线程负责UI和 ArkTS 引擎管理,以及Worker线程执行耗时任务。线程间通信可通过Emitter实现事件同步和Worker进行异步操作。
|
1月前
|
Java 开发工具 Android开发
鸿蒙HarmonyOS 与 Android 的NDK有什么区别?
鸿蒙(HarmonyOS)和Android的NDK(Native Development Kit)是两个不同的概念,它们在设计理念、架构、开发方式和目标平台等方面存在着一些显著的不同。
35 0
|
1月前
|
IDE API 开发工具
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Scroll容器组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Scroll容器组件
222 0
|
10月前
|
IDE JavaScript API
HarmonyOS开发第一步,熟知开发工具DevEco Studio
本文主要以常见的功能点作为概述希望可以帮助到学习HarmonyOS的开发者。
264 0
|
10月前
|
开发框架 开发者 JavaScript
HarmonyOS学习路之方舟开发框架—学习ArkTS语言(状态管理 三)
子组件中被@Link装饰的变量与其父组件中对应的数据源建立双向数据绑定。
|
19天前
|
JavaScript API
鸿蒙开发接口UI界面:【@ohos.mediaquery (媒体查询)】
鸿蒙开发接口UI界面:【@ohos.mediaquery (媒体查询)】
22 1
|
10月前
|
开发框架
HarmonyOS学习路之方舟开发框架—学习ArkTS语言(状态管理 四)
被@Observed装饰的类,可以被观察到属性的变化;子组件中@ObjectLink装饰器装饰的状态变量用于接收@Observed装饰的类的实例,和父组件中对应的状态变量建立双向数据绑定。这个实例可以是数组中的被@Observed装饰的项,或者是class object中是属性,这个属性同样也需要被@Observed装饰。单独使用@Observed是没有任何作用的,需要搭配@ObjectLink或者@Prop使用。
|
10月前
|
人工智能 JSON API
HarmonyOS学习路之开发篇—AI功能开发(语音识别)
语音识别功能提供面向移动终端的语音识别能力。它基于华为智慧引擎(HUAWEI HiAI Engine)中的语音识别引擎,向开发者提供人工智能应用层API。该技术可以将语音文件、实时语音数据流转换为汉字序列,准确率达到90%以上(本地识别95%)。
|
1月前
|
数据管理 API 调度
【华为鸿蒙系统学习】- HarmonyOS4.0开发|自学篇
【华为鸿蒙系统学习】- HarmonyOS4.0开发|自学篇
268 0