当前位置:   article > 正文

鸿蒙应用开发学习2——事件学习_鸿蒙 resourcetable

鸿蒙 resourcetable

1 单击事件

1.1 自定义实现类

MainAbilitySlice 继承了父类AbilitySlice ,该类是一个界面的类,
findComponentById是找到按钮的对象并返回。通过ID进行查找。其中Id_but1的类型是Id,名字是but1。findComponentById返回的是一个父类对象,需要向下转型。
ResourceTable是一个鸿蒙中界面的资源列表。如下图所示,每一个资源都有一个固定的ID。
后面的值是在内存中的地址值。通过ID可以找到按钮。
在这里插入图片描述
给按钮设置单击事件:setClickedListener。参数是单击按钮后要执行的操作。具体操作需要继承一个父类,重写onClick方法。

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

        // 1.找到按钮
        Button but1 = (Button) findComponentById(ResourceTable.Id_but1);

        // 2.给按钮绑定一个单击事件   setClickedListener需要传入一个接口实现类作为参数
        but1.setClickedListener(new MyListener());
    }

    @Override
    public void onActive() {
        super.onActive();
    }

    @Override
    public void onForeground(Intent intent) {
        super.onForeground(intent);
    }
}

class MyListener implements ClickedListener{
    boolean flag = false;
    @Override
    public void onClick(ohos.agp.components.Component component) {
        if (!flag) {
            Button btu = (Button) component;
            btu.setText("被点击");
            flag = true;
        }
        else {
            Button btu = (Button) component;
            btu.setText("点我");
            flag = false;
        }

    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

1.2 当前的类做为实现类(莫名其妙的写法)

public class MainAbilitySlice extends AbilitySlice implements ClickedListener {
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_main);

        // 1.找到按钮
        Button but1 = (Button) findComponentById(ResourceTable.Id_but1);

        // 2.给按钮绑定一个单击事件   setClickedListener需要传入一个接口实现类作为参数
        but1.setClickedListener(this);
    }

    @Override
    public void onActive() {
        super.onActive();
    }

    @Override
    public void onForeground(Intent intent) {
        super.onForeground(intent);
    }
    boolean flag = false;
    @Override
    public void onClick(Component component) {
        if (!flag) {
            Button btu = (Button) component;
            btu.setText("被点击");
            flag = true;
        }
        else {
            Button btu = (Button) component;
            btu.setText("点我");
            flag = false;
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

1.3 匿名内部类

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

        // 1.找到按钮
        Button but1 = (Button) findComponentById(ResourceTable.Id_but1);

        // 2.给but1绑定的单击事件
        but1.setClickedListener(new ClickedListener() {
            @Override
            public void onClick(Component component) {
                if (!flag) {
                    Button btu = (Button) component;
                    btu.setText("被点击");
                    flag = true;
                }
                else {
                    Button btu = (Button) component;
                    btu.setText("点我");
                    flag = false;
                }
            }
        });
    }

    @Override
    public void onActive() {
        super.onActive();
    }

    @Override
    public void onForeground(Intent intent) {
        super.onForeground(intent);
    }
    boolean flag = false;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

1.4 方法引用

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

        // 1.找到按钮
        Button but1 = (Button) findComponentById(ResourceTable.Id_but1);

        // 2.给but1绑定的单击事件
        but1.setClickedListener(this::onClick);
    }

    @Override
    public void onActive() {
        super.onActive();
    }

    @Override
    public void onForeground(Intent intent) {
        super.onForeground(intent);
    }
    boolean flag = false;
    public void onClick(Component component) {
        if (!flag) {
            Button btu = (Button) component;
            btu.setText("被点击");
            flag = true;
        }
        else {
            Button btu = (Button) component;
            btu.setText("点我");
            flag = false;
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

2 双击事件、长按事件

import ohos.agp.components.Component.ClickedListener;
import ohos.agp.components.Component.DoubleClickedListener;
import ohos.agp.components.Component.LongClickedListener;

public class MainAbilitySlice extends AbilitySlice implements DoubleClickedListener, LongClickedListener{
    boolean flag = false;
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_main);

        // 1.找到按钮
        Button but1 = (Button) findComponentById(ResourceTable.Id_but1);
        Button but2 = (Button) findComponentById(ResourceTable.Id_but2);
        Button but3 = (Button) findComponentById(ResourceTable.Id_but3);

        // 2.给but1绑定的单击事件
        but1.setClickedListener(this::onClick);
        but2.setDoubleClickedListener(this);
        but3.setLongClickedListener(this);
    }

    @Override
    public void onActive() {
        super.onActive();
    }

    @Override
    public void onForeground(Intent intent) {
        super.onForeground(intent);
    }

    public void onClick(Component component) {
        if (!flag) {
            Button btu = (Button) component;
            btu.setText("被点击");
            flag = true;
        }
        else {
            Button btu = (Button) component;
            btu.setText("点我");
            flag = false;
        }
    }

    @Override
    public void onDoubleClick(Component component) {
        if (!flag) {
            Button btu = (Button) component;
            btu.setText("被点击");
            flag = true;
        }
        else {
            Button btu = (Button) component;
            btu.setText("点我");
            flag = false;
        }
    }

    @Override
    public void onLongClicked(Component component) {
        if (!flag) {
            Button btu = (Button) component;
            btu.setText("被长按");
            flag = true;
        }
        else {
            Button btu = (Button) component;
            btu.setText("长按我");
            flag = false;
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72

3 滑动事件

主要有2点:判断按下的起点和终点位置,检测按键按下滑动松开动作

    // 参数1:component表示滑动的那个组件(布局也是一种组件)
    // 参数2:touchEvent动作对象(按下,滑动,抬起)
    @Override
    public boolean onTouchEvent(Component component, TouchEvent 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;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/350244
推荐阅读
相关标签
  

闽ICP备14008679号