鸿蒙学习笔记之滑动事件(常见动作)

Posted ✎﹏ℳ๓敬坤

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了鸿蒙学习笔记之滑动事件(常见动作)相关的知识,希望对你有一定的参考价值。

Tips:

滑动事件:当点击之后,滑动这个模块。

常见场景:轮播图滑动,文章列表上下联动,小说翻页等。

滑动事件常见动作:按下,移动,松开

 前面学习了点击,双击和长按事件,今天会学习一个新的知识点,滑动事件,这是我们实际开发中也会经常使用。

话不多说,直接上手操作上代码:

xml代码文件如下:

<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayout
    ohos:id="$+id:view"
    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:text_helloworld"
        ohos:height="match_content"
        ohos:width="match_content"
        ohos:background_element="$graphic:background_ability_main"
        ohos:layout_alignment="horizontal_center"
        ohos:text="滑动界面"
        ohos:text_size="40vp"
        />

</DirectionalLayout>

如上就是我们xml文件,我们发现我给DirectionalLayout组件设置了id,这是因为我们使用滑动事件时,是在操作我们的界面,所以我们需要DirectionalLayout设置id,这样可以获取DirectionalLayout组件,方便我们操作。

接下来就是我们的java代码,来写我们的滑动事件了,代码如下:

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.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);
    

    @Override
    public boolean onTouchEvent(Component component, TouchEvent touchEvent) 
        //获取我们滑动事件状态
        int touState = touchEvent.getAction();
        //滑动事件按下的状态
        if(touState==touchEvent.PRIMARY_POINT_DOWN)
            txt.setText("手指点下了");
        
        //滑动事件松开的状态
        else if(touState==touchEvent.PRIMARY_POINT_UP)
            txt.setText("手指松开了");
        
        //滑动事件移动的状态
        else if(touState==touchEvent.POINT_MOVE)
            txt.setText("手指移动了");
        
        return true;
    

如上,我们先找到我们组件给他绑定我们的滑动事件,而我们的滑动事件,除了给我们一个componet参数,还多了一个touchEvent参数。touchEvent是用来获取我们我们滑动事件的,getAction()可以获取我们当前操作滑动事件的状态。toucheEvent类为我们提供了很多定义属性,其中PRIMARY_POINT_DOWN,PRIMARY_POINT_UP和POINT_MOVE是我们常用的属性,

按下,松开和移动。

效果如下:

初始页面:   按下后:   松开后:   移动中:

 以上就是我们的滑动事件实现效果以及代码,需要源代码的点击[HarmonyOS的长按事件源代码.rar-Java文档类资源-CSDN下载]下载

Tips:

在滑动事件中,return false只会执行一次。

return true才能获取到移动和松开状态的响应。

 

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

以上是关于鸿蒙学习笔记之滑动事件(常见动作)的主要内容,如果未能解决你的问题,请参考以下文章

鸿蒙学习笔记之长按事件

鸿蒙学习笔记之点击事件

插件-模仿滑动动作事件

鸿蒙学习笔记之页面跳转

HarmonyOS(鸿蒙)——滑动事件

鸿蒙学习笔记之资源管理器