awtk界面实现下拉屏功能

单页面下拉屏

1.src/common/下创建slidescreen.h slidescreen.c

slidescreen.h


#ifndef SLIDESCREEN_H
#define SLIDESCREEN_H#include "awtk.h"
#include "../common/navigator.h"BEGIN_C_DECLS#define false 0
#define true  1//滑屏动作值
#define SLIDE_SCREEN_NULL   0   //滑屏空值
#define SLIDE_SCREEN_UP     1   //滑屏上滑
#define SLIDE_SCREEN_LEFT   2   //滑屏左滑
#define SLIDE_SCREEN_RIGHT  3   //滑屏右滑
#define SLIDE_SCREEN_DOWN   4   //滑屏下滑#define MAXIMUM_THRESHOLD_FOR_SLIDE 35 //滑动最大阈值typedef struct sliding_screen_parameters{uint8_t start;uint8_t end;uint16_t start_x;uint16_t start_y;uint16_t end_x;uint16_t end_y;
}sliding_screen_parameters;/*** @method sliding_screen_parameters_init* 初始化滑屏参数。* * @return {ret_t} 返回RET_OK。*/
extern ret_t sliding_screen_parameters_init(void);
/*** @method get_slide_screen_coordinates* 获取滑屏的坐标参数。* @param {event_t*} e 目标事件。* * @return {ret_t} 返回RET_OK。*/
extern ret_t get_slide_screen_coordinates(event_t* e);
/*** @method get_slide_screen_direction* 获取滑屏方向。* @return {uint8_t} 返回滑屏动作值。*/
extern uint8_t get_slide_screen_direction();END_C_DECLS#endif /*SLIDESCREEN_H*/

slidescreen.c


#include "../common/slidescreen.h"sliding_screen_parameters m_sliding_screen_parameters;ret_t sliding_screen_parameters_init(void) {m_sliding_screen_parameters.start = false;m_sliding_screen_parameters.end = false;return RET_OK;
}ret_t get_slide_screen_coordinates(event_t* e) {pointer_event_t* evt = pointer_event_cast(e);// printf("\nevt->pressed:%d\n",evt->pressed);if(evt->pressed){if(!m_sliding_screen_parameters.start){m_sliding_screen_parameters.start = true;m_sliding_screen_parameters.start_x = evt->x;m_sliding_screen_parameters.start_y = evt->y;// printf("pointer_start x:%d y:%d",evt->x,evt->y);}else{// printf("\nend\n");m_sliding_screen_parameters.end_x = evt->x;m_sliding_screen_parameters.end_y = evt->y;m_sliding_screen_parameters.end = true;// printf("pointer_end x:%d y:%d",evt->x,evt->y);}   }return RET_OK;
}uint8_t get_slide_screen_direction() {int16_t		  xlen;int16_t		  ylen;if (m_sliding_screen_parameters.end){m_sliding_screen_parameters.start = 0;m_sliding_screen_parameters.end = 0;xlen = m_sliding_screen_parameters.end_x - m_sliding_screen_parameters.start_x;ylen = m_sliding_screen_parameters.end_y - m_sliding_screen_parameters.start_y;if (abs(xlen) > MAXIMUM_THRESHOLD_FOR_SLIDE )//左右滑动{if (abs(ylen) <= 20){if (xlen > 0){return SLIDE_SCREEN_RIGHT;  }else{return SLIDE_SCREEN_LEFT;  }}}else//上下滑动{if (abs(ylen) > MAXIMUM_THRESHOLD_FOR_SLIDE){if (ylen > 0){return SLIDE_SCREEN_DOWN;  }else{return SLIDE_SCREEN_UP;  }}else if(m_sliding_screen_parameters.start_y>SCREEN_SLIDE_START&&m_sliding_screen_parameters.end_y<SCREEN_SLIDE_AERA){// printf("slide ---------------------------up\n");return SLIDE_SCREEN_TOP;}else if(m_sliding_screen_parameters.start_y<SCREEEN_HEIGHT&&m_sliding_screen_parameters.end_y>(SCREEEN_HEIGHT-SCREEN_SLIDE_AERA)){// printf("slide ----------down\n");return SLIDE_SCREEN_BOTTOM;}}}return SLIDE_SCREEN_NULL;  
}

左滑和右滑等可以实现

若全局需要下拉屏

在src/application.添加以下代码

static ret_t on_page00_home_pointer_up(void* ctx, event_t* e) {pointer_event_t* evt = pointer_event_cast(e);uint8_t common[32] = {0};// TODO: 在此添加控件事件处理程序代码switch (get_slide_screen_direction()){case SLIDE_SCREEN_UP:/* code */nvc_fastcon_variable_init(key,1);printf("nvc_fastcon_variable_init\n");break;case SLIDE_SCREEN_LEFT:common[0] = 0x80;nvc_fastcon_device_control(1,common,1);printf("nvc_fastcon_device_control\n");/* code */break;case SLIDE_SCREEN_RIGHT:common[0] = 0x00;nvc_fastcon_device_control(1,common,1);printf("nvc_fastcon_device_control\n");/* code */break;case SLIDE_SCREEN_DOWN:return navigator_switch_to("page01_down",0);break;default:break;}
}

初始化加入以下代码

widget_t *window_down = window_manager();
widget_on(window_down, EVT_POINTER_MOVE, on_page00_home_pointer_move, NULL);
widget_on(window_down, EVT_POINTER_UP, on_page00_home_pointer_up, NULL);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/29146.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Navicat 安装及初步配置指南

Navicat 是一款广泛使用的数据库管理工具&#xff0c;支持多种数据库&#xff0c;如 MySQL、PostgreSQL、SQLite 等。以下是 Navicat 安装步骤的详细说明&#xff1a; 在 Windows 上安装 Navicat 下载 Navicat 安装包&#xff1a; 访问 Navicat 官方网站&#xff1a;Navicat 官…

第2讲:pixi.js 绘制HelloWorld

基于第0讲和第1讲&#xff0c;我们增添了vite.config.ts文件。并配置了其他的http端口。 此时&#xff0c;我们删除掉没用的东西。 删除 conter.ts、typescript.svg 在main.ts中改成如下内容&#xff1a; import {Application, Text} from pixi.js import ./style.css// 指明…

C语言笔记25 •顺序表介绍•

数据结构是计算机存储、组织数据的⽅式。数据结构是指相互之间存在⼀种或多种特定关系 的数据元素的集合。数据结构反映数据的内部构成&#xff0c;即数据由那部分构成&#xff0c;以什么⽅式构成&#xff0c;以及数据元素之间呈现的结构。也就是能够存储数据&#xff1b; 存储…

中介子方程二十二

X$XFX$XdXuXWXπX$XWXeXyXeXyXeXWX$XπXWXuXdX$XFX$XEXyXαXiX$XαXiXrXkXtXyX$XpXVX$XdXuXWXπX$XWXeXyXeXyXeXWX$XπXWXuXdX$XVXpX$XyXtXkXrXiXαX$XiXαXyXEX$XFX$XEXyXαXiX$XαXiXrXkXtXyX$XpXVX$XdXuXWXπX$XWXeXyXeXyXeXWX$XπXWXuXdX$XVXpX$XyXtXkXrXiXαX$XiXαXyXEX$…

导航台运营状态明细

Select a.部门, a.最近登陆时间, b.prev_exec_start 访问时间, b.username 访问用户, b.姓名 From zlClients A, (Select a.Prev_Exec_Start, a.Username, Terminal, c.姓名 From sys.gv_$session A, 上机人员表 B, 人员…

Nginx06-rewrite模块详解与实验

目录 写在前面Nginx06nginx rewriterewrite 模块return案例01 访问/admin/ 返回403案例02 域名间跳转 if案例03 只允许GET、POST请求&#xff0c;其他禁止访问 set案例04 设置是否处于维护状态&#xff0c;是则返回503&#xff0c;否则正常访问 rewrite案例05 域名跳转案例06 r…

Unity | Shader基础知识(第十四集:简单效果练习)

目录 前言 一、效果预览 1.弧形边缘光 二、效果制作 1. 制作弧形边缘光 2.弧形边缘光进阶 3.弧形边缘光调节渐变范围 4.边缘光突变 5.同心圆 三、加入世界坐标做效果 1.绘制结界 2.斑马球 3.效果合并 四、作者的碎碎念 前言 有粉丝建议说&#xff0c;让我继续更新…

JMU 数科 数据库与数据仓库期末总结(4)实验设计题

E-R图 实体-关系图 E-R图的组成要素主要包括&#xff1a; 实体&#xff08;Entity&#xff09;&#xff1a;实体代表现实世界中可相互区别的对象或事物&#xff0c;如顾客、订单、产品等。在图中&#xff0c;实体通常用矩形表示&#xff0c;并在矩形内标注实体的名称。 属性…

基于c语言的简单的数据库

​‌​⁠​​​​​⁠​‬​‬‌​‍​​​‌​‌‬​‌​⁠​​&#xfeff;‬‍‬​​⁠​‬‍&#xfeff;​​‬​​​‬简单的数据库 - 飞书云文档 (feishu.cn) mydatabase: 实现一个简单的数据库&#xff0c;基于B树 (gitee.com)

纯css星空动画

让大家实现一个这样的星空动画效果,大家会怎么做? js,不! 其实使用css就能写 我也不藏着掖着,源码直接放下面了 <script setup></script><template><div class"box"><div v-for"i in 5" :key"i" :class"layer…

基于C#、Visual Studio 2017以及.NET Framework 4.5的Log4Net使用教程

在使用Log4Net记录日志时&#xff0c;以下是一个基于C#、Visual Studio 2017以及.NET Framework 4.5的详细步骤教程。这个教程适合初学者&#xff0c;会从添加Log4Net库、配置日志、编写日志记录代码等方面进行说明。 步骤1&#xff1a;安装Log4Net 通过NuGet安装 打开您的Vi…

信友队:南风的收集

C. [202406C]楠枫的收集 文件操作 时间限制: 1000ms 空间限制: 262144KB 输入文件名: 202406C.in 输出文件名: 202406C.out Accepted 100 分 题目描述 一年四季&#xff0c;寒暑交替&#xff0c;楠枫总是会收集每一个季节的树叶&#xff0c;并把它们制作成标本收集起来。当…

力扣 24.两两交换链表的结点

class Solution { public: ListNode* swapPairs(ListNode* head) { if(headnullptr ||head->nextnullptr) return head; auto tmpswapPairs(head->next->next); auto rethead->next; head->next->nexthead; head->nexttmp; return ret; } };

解放代码:识别与消除循环依赖的实战指南

目录 一、对循环依赖的基本认识 &#xff08;一&#xff09;代码中形成循环依赖的说明 &#xff08;二&#xff09;无环依赖的原则 二、识别和消除循环依赖的方法 &#xff08;一&#xff09;使用JDepend识别循环依赖 使用 Maven 集成 JDepend 分析报告识别循环依赖 &a…

用Python pillow 创建和保存GIF动画

使用pillow库来创建和保存gif GIFs:图形交换格式(gif)是一种位图图像格式&#xff0c;由美国计算机科学家Steve Wilhite于1987年6月15日领导的在线服务提供商CompuServe的一个团队开发。 一个GIF文件通常存储一个图像&#xff0c;但该格式允许在一个文件中存储多个图像。该格…

为什么要学习这么多“没用”的知识

最近也在看一些东西&#xff0c;很多很杂&#xff0c;底层的知识&#xff0c;高级的架构&#xff0c;正确且废话的方法论。。。越看越迷茫。和同学聊天&#xff0c;也在自嘲现在看的这些八股文&#xff0c;源代码&#xff0c;除了面试那几天用一下&#xff0c;可能一辈子都不会…

【Java05】Java中的多维数组

从数组底层运行机制上看&#xff0c;Java没有多维数组一说。所谓多维数组&#xff0c;是说一个引用变量指向的元素也是引用变量。 例如&#xff0c;type[] arrayName是个指向type类型元素的数组。倘若type也是数组引用变量&#xff0c;比如int[]&#xff0c;那么这个数组就可以…

中国银行信息科技运营中心、软件中心春招笔试测评面试体检全记录

本文介绍2024届春招中&#xff0c;中国银行下属各部门统一笔试&#xff0c;以及信息科技运营中心与软件中心各自的面试&#xff0c;以及编程能力测评、体检等相关环节的具体流程、相关信息等。 2024年04月投递了中国银行的信息科技类岗位&#xff0c;一共投递了4个岗位&#xf…

数字孪生定义及应用介绍

数字孪生定义及应用介绍 1 数字孪生&#xff08;Digital Twin, DT&#xff09;概述1.1 定义1.2 功能1.3 使用场景1.4 数字孪生三步走1.4.1 数字模型1.4.2 数字影子1.4.3 数字孪生 数字孪生地球平台Earth-2 参考 1 数字孪生&#xff08;Digital Twin, DT&#xff09;概述 数字孪…

QT TCP服务器和客户端示例程序

下面是一个简单的 Qt TCP 服务器和客户端示例&#xff0c;演示了如何使用 vSetDriver、vSetListener 和 vTcpServerStart 函数。假设 vSetDriver 和 vSetListener 是你定义的自定义函数。 TCP 服务器部分 tcpserver.h #ifndef TCPSERVER_H #define TCPSERVER_H#include <QT…