IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 鸿蒙学习笔记之点击事件 -> 正文阅读

[Java知识库]鸿蒙学习笔记之点击事件

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下载

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

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

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-11-28 11:07:59  更:2021-11-28 11:09:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:23:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码