鸿蒙学习笔记之点击事件

Posted ✎﹏ℳ๓敬坤

tags:

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

Tips:

在上一篇中,分享了如何页面跳转。今天就继续详细讲讲点击事件,明天会继续分享双击事件和长按事件

 1.点击事件

在HarmonyOS中有四种点击事件,接下来我们分别介绍一下四种点击事件,以及如何实现

1.自定义实现类

在我们的xml文件下定义buttom标签,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayout
    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"
        />
    <Button
        ohos:id="$+id:aBtn"
        ohos:height="match_content"
        ohos:width="match_content"
        ohos:background_element="red"
        ohos:text_size="40fp"
        ohos:text_color="white"
        ohos:text="我是按钮"/>

</DirectionalLayout>

在我们java文件中如下定义点击事件:

package com.example.mydeom;

import com.example.mydeom.slice.MainAbilitySlice;
import ohos.aafwk.ability.Ability;
import ohos.aafwk.content.Intent;
import ohos.aafwk.content.Operation;
import ohos.agp.components.Button;
import ohos.agp.components.Component;

public class MainAbility extends Ability 
    //定义一个Button变量
    private Button bTn;
    @Override
    public void onStart(Intent intent) 
        super.onStart(intent);
        //主入口
        super.setMainRoute(MainAbilitySlice.class.getName());
        //设置UI内容
        super.setUIContent(ResourceTable.Layout_ability_main);
        //根据组件ID找到我们定义在页面中的buttom
        bTn =(Button) findComponentById(ResourceTable.Id_aBtn);
        bTn.setClickedListener(new MyClick());
    

//定义点击事件类
class MyClick implements Component.ClickedListener

    @Override
    public void onClick(Component component) 
        //获取当前点击组件
        Button btn=(Button) component;
        //设置当前组件文本内容为“点击了”
        btn.setText("点击了");
    

如上所以我们就可以完成自定义事件的功能了,效果如下:

点击前:点击后:

2.当前类作为实现类

创建一个新的ability Second,java代码如下,xml文件如上一个差不多:

package com.example.mydeom;

import com.example.mydeom.slice.SecondSlice;
import ohos.aafwk.ability.Ability;
import ohos.aafwk.content.Intent;
import ohos.agp.components.Button;
import ohos.agp.components.Component;

public class Second extends Ability implements Component.ClickedListener 
    private Button bTn;
    @Override
    public void onStart(Intent intent) 
        super.onStart(intent);
        super.setMainRoute(SecondSlice.class.getName());
        //根据组件ID找到我们定义在页面中的buttom
        bTn =(Button) findComponentById(ResourceTable.Id_bBtn);
        //给bTn绑定当前类的点击事件
        bTn.setClickedListener(this);
    

    @Override
    public void onClick(Component component) 
        bTn.setText("点击了");
    

3.匿名内部类

匿名内部类具体代码如下:

package com.example.mydeom;

import com.example.mydeom.slice.ThreeSlice;
import ohos.aafwk.ability.Ability;
import ohos.aafwk.content.Intent;
import ohos.agp.components.Button;
import ohos.agp.components.Component;

public class Three extends Ability 
    private Button bTn;
    @Override
    public void onStart(Intent intent) 
        super.onStart(intent);
        super.setMainRoute(ThreeSlice.class.getName());
        //根据组件ID找到我们定义在页面中的buttom
        bTn =(Button) findComponentById(ResourceTable.Id_cBtn);
        //给bTn绑定当前类的点击事件
        bTn.setClickedListener(new Component.ClickedListener() 
            @Override
            public void onClick(Component component) 
                bTn.setText("点击了");
            
        );
    

4.方法引用

方法引用类具体如下:

package com.example.mydeom;

import com.example.mydeom.slice.FourSlice;
import ohos.aafwk.ability.Ability;
import ohos.aafwk.content.Intent;
import ohos.agp.components.Button;
import ohos.agp.components.Component;

public class Four extends Ability 
    private Button bTn;
    @Override
    public void onStart(Intent intent) 
        super.onStart(intent);
        super.setMainRoute(FourSlice.class.getName());
        //根据组件ID找到我们定义在页面中的buttom
        bTn =(Button) findComponentById(ResourceTable.Id_dBtn);
        //给bTn绑定当前类的点击事件
        bTn.setClickedListener(this::onClick);
    
    public void onClick(Component component) 
        bTn.setText("点击了");
    

到这里我们就讲完了四种点击事件的实现方法了! 

我会将这次的代码上传到资源上去,大家可以去下载哟

Tips:

四种点击事件的区别是什么呢?

这里具体讲解一下:

第二种事件在应用当前类中的其他组件会比第一种方便一些,那方便在哪里呢?

因为要应用当前类中的组件需要在onStar中定义,而第一种是一个独立的类,所以应用当前类组件会比较不方便

而第三种直接定义会造成当前点击事件只能实现一次的效果,如果实现一次效果的话,可以使用第三种匿名函数类的方法

第四种相当于引用当前类下中的一个方法

 需要源代码的可以点击这个链接去下载HarmonyOS点击事件的四种实现方法源代码.rar-其它文档类资源-CSDN下载

分享不易,觉得不错的可以持续关注此专栏,留下一个免费点赞哟!

作者也会不定时的更新新的知识给大家的!

以上是关于鸿蒙学习笔记之点击事件的主要内容,如果未能解决你的问题,请参考以下文章

鸿蒙学习笔记之长按事件

鸿蒙学习笔记之页面跳转

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

鸿蒙学习笔记之初识鸿蒙

鸿蒙学习笔记之初运项目

HarmonyOS鸿蒙学习笔记Navigator组件实现页面路由跳转