ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

awtk开发实践——学习篇8:button示例(按键控件)

2021-10-17 21:07:14  阅读:301  来源: 互联网

标签:控件 widget set ok 示例 EVT button pointer


说明
  本文章旨在总结备份、方便以后查询,由于是个人总结,如有不对,欢迎指正;另外,内容大部分来自网络、书籍、和各类手册,如若侵权请告知,马上删帖致歉。
  QQ 群 号:513683159 【相互学习】
内容来源
  官方的手册(免费获取)Pxx=该手册的对应页码xx
  github-awtk

说明

  awtk开发实践——学习篇7:创建简单工程(方式二:基于HelloWorld.Xml-Demo工程)
  按照上篇创建工程,只需将label.c文件替换为bubble.c文件。
  修改一下可执行文件名即可。

button.c

#include "awtk.h"

static ret_t on_click(void* ctx, event_t* e) {
  widget_t* button = WIDGET(e->target);
  log_debug("on_click: %s\n", button->name);
  return RET_OK;
}

static ret_t on_long_press(void* ctx, event_t* e) {
  widget_t* button = WIDGET(e->target);
  log_debug("on_long_press: %s\n", button->name);
  return RET_OK;
}

static ret_t on_pointer_leave(void* ctx, event_t* e) {
  widget_t* button = WIDGET(e->target);
  log_debug("on_pointer_leave: %s\n", button->name);
  return RET_OK;
}

static ret_t on_pointer_up(void* ctx, event_t* e) {
  widget_t* button = WIDGET(e->target);
  log_debug("on_pointer_up: %s\n", button->name);
  return RET_OK;
}

ret_t application_init() {
  widget_t* win = window_create(NULL, 0, 0, 0, 0);				//创建window对象
  widget_t* ok = button_create(win, 0, 0, 0, 0);				//创建button对象

  locale_info_change(locale_info(), "zh", "CN");				//设置当前的国家和语言。默认为:"en", "US"

  widget_set_name(ok, "ok");									//设置控件的名称:ok
  widget_set_tr_text(ok, "ok");									//获取翻译之后的文本,然后调用widget_set_text
  button_set_enable_long_press(ok, TRUE);						//设置是否启用长按事件
  button_set_long_press_time(ok, 1000);							//设置触发长按事件的时间:1000毫秒
  widget_set_self_layout_params(ok, "center", "middle", "50%", "30");//设置控件自己的布局(缺省布局器)参数(过时,请用widget_set_self_layout)。
// 等同于:widget_set_self_layout(ok, "default(x=center, y=middle, w=50%, h=30)");
  widget_on(ok, EVT_CLICK, on_click, NULL);						//注册指定事件的处理函数
  widget_on(ok, EVT_LONG_PRESS, on_long_press, NULL);			//注册指定事件的处理函数
  widget_on(ok, EVT_POINTER_LEAVE, on_pointer_leave, NULL);		//注册指定事件的处理函数
  widget_on(ok, EVT_POINTER_UP, on_pointer_up, NULL);			//注册指定事件的处理函数

  widget_layout(win);											//布局当前控件及子控件

  return RET_OK;
}

该示例注册4种触发事件:
  ①EVT_CLICK:点击事件名(pointer_event_t)。
    点击按键触发,输出:on_click: ok
  ②EVT_LONG_PRESS:长按事件名(pointer_event_t)。
    长按按键1s触发,输出:on_long_press: ok
  ③EVT_POINTER_LEAVE:指针离开事件名(pointer_event_t)。
    鼠标从按键上离开触发:输出:on_pointer_leave: ok
  ④EVT_POINTER_UP:指针抬起事件名(pointer_event_t)。
    鼠标按下按键抬起瞬间触发,输出:on_pointer_up: ok

执行过程:

  1.生成资源:sh assets_gen.sh,与上一项目相同(无更改),故此处可省略。
  2.编译:scons
  3.执行:./bin/demo

实现效果:

在这里插入图片描述

标签:控件,widget,set,ok,示例,EVT,button,pointer
来源: https://blog.csdn.net/weixin_42645653/article/details/120813952

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有