HarmonyOS实战—滑动事件的三个动作

简介: HarmonyOS实战—滑动事件的三个动作

1. 滑动事件的三个动作

  • 接口名:TouchEventListener
  • 滑动事件里面分为三个动作:按下不松,移动,抬起。
PRIMARY_POINT_DOWN:按下不松。
POINT_MOVE:移动。
PRIMARY_POINT_UP:抬起。
  • 方法返回值:
true 表示继续执行后面的动作。
false 表示不会继续执行后面的动作。
  • 涉及到如下三个动作,根据用户按下位置松下位置,就可以辨别用户是上、下、左、或右滑动

在这里插入图片描述

  • 如:可以辨别出用户是向右滑动(简称:右滑

在这里插入图片描述

  • 如:可以辨别出用户是向下滑动(简称:下滑

在这里插入图片描述

2. 实现案例:按下、移动或松开都要修改文本的内容

  • 因为要在整个屏幕上滑动,所以要给最外面的布局DirectionalLayout设置滑动事件,加个id
  • 按下、移动或抬起都要修改文本的内容
  • 新建项目:ListenerApplication4
  • 代码实现

ability_main

  • 采用默认生成的Text文本内容,在此基础上给DirectionalLayout布局和Text组件分别加上id
<?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:text1"
        ohos:height="match_content"
        ohos:width="match_content"
        ohos:background_element="$graphic:background_ability_main"
        ohos:layout_alignment="horizontal_center"
        ohos:text="$string:mainability_HelloWorld"
        ohos:text_size="40vp"
        />

</DirectionalLayout>

MainAbilitySlice

  • 采用当前类作为实现类接口的方式编写
package com.xdr630.listenerapplication.slice;

import com.xdr630.listenerapplication.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.TouchEvent;

public class MainAbilitySlice extends AbilitySlice implements Component.TouchEventListener {

    Text text1 = null;

    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_main);

        //1.先找到整个布局对象
        DirectionalLayout dl = (DirectionalLayout) findComponentById(ResourceTable.Id_dl);
        text1 = (Text) findComponentById(ResourceTable.Id_text1);

        //2.给整个布局添加滑动事件
        //当我们在整个布局滑动的时候,就会调用本类中的onTouchEvent方法
        //在按下 移动、松开的过程,代码会不断去调用本类中的 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) {
        //参数1:component表示滑动的组件(布局也是一种组件,所以也可以用component表示布局对象)
        //实际上此时代表的就是DirectionalLayout布局对象,这个布局是铺满整个屏幕的
        //参数2:touchEvent表示动作对象(按下、滑动、抬起)

        //获取当前手指对屏幕进行操作(按下、滑动、抬起)
        int action = touchEvent.getAction();
        // 1:表示按下操作
        // 2:表示松开操作
        // 3. 表示滑动/移动操作

        if (action == TouchEvent.PRIMARY_POINT_DOWN){
            //只要写按下时需要运行的代码即可
            text1.setText("按下");
        }else if (action == TouchEvent.POINT_MOVE){
            //移动或滑动
            text1.setText("移动");
        }else if (action == TouchEvent.PRIMARY_POINT_UP){
            //松开或抬起
            text1.setText("松开");
        }
        return true;
    }
}
  • 运行:

在这里插入图片描述

  • 按下:

在这里插入图片描述

  • 移动:

在这里插入图片描述

  • 松开:

在这里插入图片描述

3. 按下、滑动、松开 参数说明

在这里插入图片描述
在这里插入图片描述

  • 可以看到1、2、3数字分别表示PRIMARY_POINT_DOWN(按下)、PRIMARY_POINT_UP(松开)、POINT_MOVE(移动)所以上面代码的参数也可以直接用数字代替,但为了更直观表达,建议使用参数,一目了然。
  • 如:使用数字表示
    if (action == 1){
        //只要写按下时需要运行的代码即可
        text1.setText("按下");
    }else if (action == 3){
        //移动或滑动
        text1.setText("移动");
    }else if (action == 2){
        //松开或抬起
        text1.setText("松开");
    }

4. 验证 按下、 移动、松开的过程,代码会不断去调用本类中的 onTouchEvent方法

  • 在上述代码的基础上,定义成员变量计数器 int count = 0

在这里插入图片描述

  • onTouchEvent方法被调用一次,就给加上一次

在这里插入图片描述

  • count放在每次操作的后面

在这里插入图片描述

  • 当按下时,是第一次调用,count应该为1

在这里插入图片描述

  • 移动的时候随着鼠标不断移动,也就会不断地调用onTouchEvent方法,count就会递增

在这里插入图片描述

  • 当松开后,也会调用一次,count在前面数值的基础上加1

在这里插入图片描述

  • 所以,经过验证:

在 按下 、移动、松开的过程,代码会不断去调用本类中的 onTouchEvent方法。

目录
相关文章
|
27天前
|
JavaScript API 数据处理
基于HarmonyOS 5.0 (Next)技术的渐变模糊效果技术实现【代码实战】
本文详细介绍如何在HarmonyOS 5.0(Next)中实现渐变模糊效果,涵盖从基础页面搭建到添加模糊、渐变效果的全过程,并通过代码实战展示具体操作步骤。文章首先介绍了使用`Stack`和`Image`控件设置背景并应用`foregroundBlurStyle`属性实现模糊效果,接着通过`linearGradient`属性融入渐变效果,使界面更加精致美观。此外,还展示了如何利用滑动条和手势等交互元素动态调整模糊与渐变效果,增强用户体验。最后,通过具体代码示例说明如何为图片、弹窗等控件添加渐变模糊效果,突显HarmonyOS的强大功能与灵活性。
95 17
|
28天前
|
数据管理 API 调度
鸿蒙HarmonyOS应用开发 | 探索 HarmonyOS Next-从开发到实战掌握 HarmonyOS Next 的分布式能力
HarmonyOS Next 是华为新一代操作系统,专注于分布式技术的深度应用与生态融合。本文通过技术特点、应用场景及实战案例,全面解析其核心技术架构与开发流程。重点介绍分布式软总线2.0、数据管理、任务调度等升级特性,并提供基于 ArkTS 的原生开发支持。通过开发跨设备协同音乐播放应用,展示分布式能力的实际应用,涵盖项目配置、主界面设计、分布式服务实现及部署调试步骤。此外,深入分析分布式数据同步原理、任务调度优化及常见问题解决方案,帮助开发者掌握 HarmonyOS Next 的核心技术和实战技巧。
198 76
鸿蒙HarmonyOS应用开发 | 探索 HarmonyOS Next-从开发到实战掌握 HarmonyOS Next 的分布式能力
|
20天前
|
存储 JavaScript 开发工具
基于HarmonyOS 5.0(NEXT)与SpringCloud架构的跨平台应用开发与服务集成研究【实战】
本次的.HarmonyOS Next ,ArkTS语言,HarmonyOS的元服务和DevEco Studio 开发工具,为开发者提供了构建现代化、轻量化、高性能应用的便捷方式。这些技术和工具将帮助开发者更好地适应未来的智能设备和服务提供方式。
52 8
基于HarmonyOS 5.0(NEXT)与SpringCloud架构的跨平台应用开发与服务集成研究【实战】
|
27天前
|
安全 数据安全/隐私保护 UED
HarmonyOS 5.0 (Next)应用开发实战:使用ArkTS构建开箱即用的登录页面【HarmonyOS 5.0(Next)】
### HarmonyOS 5.0(Next)应用开发实战:使用ArkTS构建开箱即用的登录页面 HarmonyOS 5.0(Next)融合了美学与科技,引入“光感美学”设计理念和多设备深度协同功能。本文通过 ArkTS 构建一个简单的登录页面,展示了模块化导入、状态管理、方法封装、声明式UI构建及事件处理等最佳实践。代码实现了一个包含用户名和密码输入框及登录按钮的界面,支持错误提示和页面跳转。
130 14
HarmonyOS 5.0 (Next)应用开发实战:使用ArkTS构建开箱即用的登录页面【HarmonyOS 5.0(Next)】
|
25天前
|
26天前
|
自然语言处理 搜索推荐 数据安全/隐私保护
鸿蒙登录页面好看的样式设计-HarmonyOS应用开发实战与ArkTS代码解析【HarmonyOS 5.0(Next)】
鸿蒙登录页面设计展示了 HarmonyOS 5.0(Next)的未来美学理念,结合科技与艺术,为用户带来视觉盛宴。该页面使用 ArkTS 开发,支持个性化定制和无缝智能设备连接。代码解析涵盖了声明式 UI、状态管理、事件处理及路由导航等关键概念,帮助开发者快速上手 HarmonyOS 应用开发。通过这段代码,开发者可以了解如何构建交互式界面并实现跨设备协同工作,推动智能生态的发展。
144 10
鸿蒙登录页面好看的样式设计-HarmonyOS应用开发实战与ArkTS代码解析【HarmonyOS 5.0(Next)】
|
23天前
|
Dart 前端开发 IDE
鸿蒙Flutter实战:14-现有Flutter 项目支持鸿蒙 II
本文介绍了如何将现有 Flutter 项目适配鸿蒙系统,详细步骤包括安装 FVM、使用 FVM 安装 Flutter SDK、搭建开发环境、创建项目架构和壳工程等。
149 4
鸿蒙Flutter实战:14-现有Flutter 项目支持鸿蒙 II
|
27天前
|
人工智能 安全 数据安全/隐私保护
HarmonyOS应用开发实战:基于ArkTS的开箱即用登录页面实现【样式方式实现①】【HarmonyOS 5.0(Next)】
本文介绍了基于HarmonyOS 5.0(Next)和ArkTS实现的开箱即用登录页面。HarmonyOS 5.0是华为于2024年10月22日发布的第三代移动操作系统,具备原生智能、互联、安全及流畅特性。文章详细解析了使用ArkTS开发登录页面的代码,涵盖组件定义、界面布局、事件处理、样式设置及异步操作等内容,展示了清晰的组件结构、响应式设计与模块化编程的优势。通过这段代码,开发者可以快速上手并构建高效、美观的应用界面。
149 9
|
17天前
|
存储 人工智能 JavaScript
Harmony OS开发-ArkTS语言速成二
本文介绍了ArkTS基础语法,包括三种基本数据类型(string、number、boolean)和变量的使用。重点讲解了let、const和var的区别,涵盖作用域、变量提升、重新赋值及初始化等方面。期待与你共同进步!
81 47
Harmony OS开发-ArkTS语言速成二
|
18天前
|
索引 API
鸿蒙开发:自定义一个股票代码选择键盘
金融类的软件,特别是股票基金类的应用,在查找股票的时候,都会有一个区别于正常键盘的键盘,也就是股票代码键盘,和普通键盘的区别就是,除了常见的数字之外,也有一些常见的股票代码前缀按钮,方便在查找股票的时候,更加方便的进行检索。
鸿蒙开发:自定义一个股票代码选择键盘

热门文章

最新文章