HarmonyOS(鸿蒙)——模仿抖音点赞和取消点赞

简介: HarmonyOS(鸿蒙)——模仿抖音点赞和取消点赞

本文已收录于专栏


❤️《鸿蒙开发》❤️


欢迎各位关注、三连博主的文章及专栏,每周定期更新1-5篇基础文章,共勉!


目录


一、需求:


二、实现步骤:


2.1 页面布局


2.2 业务实现


一、需求:

本文的需求是模仿抖音的点赞和取消点赞;主要有两个部分,点赞和取消点赞。

点赞有两种方式:


单击为点赞的小爱心

双击屏幕,如果未点赞则为点赞

取消点赞有一种方式:


单击已点赞的小爱心

上述点赞和未点赞的状态是根据小爱心的颜色来区分的,未点赞为白色小爱心,点赞之后为红色小爱心

image.png

二、实现步骤:

2.1 页面布局

这一步中需要使用到一个标签,标签是图片控件,我们可以通过设置标签中图片的改变来标志点赞与取消点赞的状态,此外由于我们需要双击屏幕,这个时候我们需要使用到控件最外层的DirectionalLayout控件,因此我们给DirectionalLayout控件添加ID,便于定位。

实现代码:

image.pngimage.png实现代码:

package com.liziba.demo.slice;
import com.liziba.demo.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.Image;
public class MainAbilitySlice extends AbilitySlice implements Component.ClickedListener, Component.DoubleClickedListener {
    /** DirectionalLayout控件 */
    DirectionalLayout directionalLayout;
    /** Image控件 */
    Image image;
    /** 是否点赞  true 代表点赞 false 代表取消点赞 */
    Boolean like = false;
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_main);
        // 获取DirectionalLayout控件
        directionalLayout = (DirectionalLayout) this.findComponentById(ResourceTable.Id_dl);
        // 获取Image控件
        image = (Image) this.findComponentById(ResourceTable.Id_img);
        // 注册双击事件
        directionalLayout.setDoubleClickedListener(this);
        // 注册单击事件
        image.setClickedListener(this);
    }
    /**
     * 单击事件方法
     *
     * @param component
     */
    @Override
    public void onClick(Component component) {
        // 单击修改Image图片
        if (component.getId() == ResourceTable.Id_img) {
            like = !like;
            image.setImageAndDecodeBounds(like ? ResourceTable.Media_red : ResourceTable.Media_white);
        }
    }
    /**
     * 双击事件方法
     *
     * @param component
     */
    @Override
    public void onDoubleClick(Component component) {
        // 双击修改Image图片,如果未点赞,则修改为红色小红心,如果已点赞则不处理
        if (component.getId() == ResourceTable.Id_dl && !like) {
            image.setImageAndDecodeBounds(ResourceTable.Media_red);
        }
    }
    @Override
    public void onActive() {
        super.onActive();
    }
    @Override
    public void onForeground(Intent intent) {
        super.onForeground(intent);
    }
}

image.pngimage.pngimage.png

目录
相关文章
|
1月前
|
编解码 视频直播 开发工具
|
1月前
|
IDE 开发工具 Windows
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之RowSplit容器组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之RowSplit容器组件
51 0
|
2月前
|
IDE API 开发工具
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Counter容器组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Counter容器组件
42 1
|
2月前
|
IDE 开发工具 Windows
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之ColumnSplit容器组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之ColumnSplit容器组件
39 0
|
2月前
|
IDE API 开发工具
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Column容器组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Column容器组件
51 0
|
2月前
|
IDE API 开发工具
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Badge组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Badge组件
43 0
|
2月前
|
程序员 开发者
纯血鸿蒙来画龙!基于HarmonyOS ArkTS来操作SVG图片
大家好,龙年报喜,大地回春,作为程序员,以代码之名,表达对于龙年的祝福。本节将演示如何在基于HarmonyOS ArkTS的Image组件来实现画一条中国龙,祝大家“码”上“鸿”福到!
43 0
|
2月前
|
IDE API 开发工具
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之QRCode组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之QRCode组件
53 2
|
2月前
|
IDE 开发工具 数据安全/隐私保护
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之PatternLock组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之PatternLock组件
50 0
|
2月前
|
IDE API 开发工具
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Navigation组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Navigation组件
133 0