QT使用之 手指滑动 | 物理惯性继续滑动动画的实现,根据不同速度实现不同动画效果
2021/03/26:
参考如下:有惯性,有回顶效果;使用手势
QT使用之 :手指滑动后物理惯性滑动-动画的实现,根据不同速度有不同的效果
一、 前言
首先,因为是使用手指滑动,所以控件要求能够支持 touch事件
添加touch事件的思路可以参考之前的文章:
QT:触摸屏支持手指触摸,增加touch事件touchevent,记录前后touch坐标并处理
二、思路
1、思路其实很简单,就是 touch 事件结束之后,让滚动条自己再继续滚动一会就可以了;
2、对于惯性减速的实现,在touch事件开始以及结束的时候,可以获取touch的方向以及速度;
3、动画的实现,使用QTimer间隔一定的时间后,对于当前滑动实现减速 + 滑动的效果
三、实现代码
主要就是定时器的使用~
代码中的startPoint 和 endPoint 依旧是使用QT:触摸屏支持手指触摸,增加touch事件touchevent,记录前后touch坐标并处理中的逻辑,所以得看一下
bool WidgetTouch::touchEndEventProcess(QEvent *event)
{QTouchEvent *touchEvent = static_cast<QTouchEvent *>(event);int touchDistance = qAbs (startPoint.x() - endPoint.x());touchEnd_time =QTime::currentTime();elapsed = touchBegin_time.msecsTo(touchEnd_time);speed = touchDistance * 1000 / elapsed; // 计算当前滑动的速度 单位 sm_rollTime = 20;m_rollTimer->setInterval(m_rollTime);// 增加阈值if (touchDistance >= 10 && elapsed >200){startRoll();}touchEvent->accept();return true;
}// 物理惯性动画效果
void WidgetTouch::startRoll()
{m_rollTimer->start();
}void WidgetTouch::onTimeout()
{everyDistance = speed * m_rollTime / 1000;// 此处的 bar 就是自己定义的 需要滚动的 QScrollBarbar->setValue(bar->value() + everyDistance);if (speed >= 40) { // 每一次 40 pxspeed -= 40;} else {m_rollTimer->stop();}update();
}
QT使用之 手指滑动 | 物理惯性继续滑动动画的实现,根据不同速度实现不同动画效果相关推荐
- 前端也要懂物理 —— 惯性滚动篇
作者:凹凸曼-吖伟 我们在平时编程开发时,除了需要关注技术实现.算法.代码效率等因素之外,更要把所学到的学科知识(如物理学.理论数学等等)灵活应用,毕竟理论和实践相辅相成.密不可分,这无论是对于我们的 ...
- 写了个移动端可滑动(惯性滑动回弹)Vue导航栏组件 ly-tab
前段时间写了一个移动端的自适应滑动Vue导航栏组件,觉得有一定实用性,大家可能会用得到(当然有些大佬自己写得更好的话就没必要啦),于是前两天整理了一下,目前已经发布到npm和GitHub上了,点我到n ...
- QT+OpenCV综合示例:图像混合(滑动条)
QT+OpenCV综合示例:图像混合(滑动条) 1.代码: 2.运行结果: 0)Widget_op.ui (界面文件)设计: 1.代码: 1)opencv_imwrite_Q.pro 添加: INCL ...
- Android素描算法及实现手指在图片上左右滑动调节图片透明度,最终实现类似调节素描浓度的效果
一.前期基础知识储备 UI掌握PS这一逆天的软件,可以实现将图片转化为素描或者水彩的效果,以素描为例: 在Photoshop中打开一张人物照片,按下快捷键"Ctrl+Shift+U" ...
- iOS开发68-iOS 如何让UIScrollView在手指离开后立即停止滑动
iOS开发68-iOS 如何让UIScrollView在手指离开后立即停止滑动 在Delegate里面 -(void)scrollViewWillBeginDecelerating: (UIScrol ...
- 开发板Linux手指滑动方向,移动应用滑动屏幕方向判断解决方案,JS判断手势方向...
问题分类 滑动屏幕打开相应功能操作. 问题描述 1.用户手动滑动屏幕,根据滑动的方向,打开相应的功能(如:向上滑摇钱树经验明细,向下滑打开任务明细,向左滑打开聚宝盆物品查看等功能),滑动事件捕获问题. ...
- 按钮滑动隐藏,停止滑动显示的动画
想用tweenAnimation来做 res下新建anim文件夹,添加bottom_slide_in.xml和bottom_slide_out.xml bottom_slide_in.xml 滑入动画 ...
- Flutter滑动体验对齐原生-滑动曲线篇
自从使用了Flutter以来,闲鱼在享受着跨端带来的提效的同时,流畅度一直是困扰了我们许久的问题,也是被外界吐槽得比较多的地方.所以我们在过去半年,重新牵起了流畅度优化这件事情,目标只有一个,那就是拉 ...
- scrollview 实现滑动到底部再滑动加载数据的功能
思路:在滑动基础上添加scrollview到底检测事件 1.首先检测是否滑动 [java] view plaincopy // 滑动加载 scrollView.setOnTouchListener(n ...
最新文章
- Windows Mobile 6.0 SDK和中文模拟器下载
- Spring Boot 中使用@Async实现异步调用,加速任务执行!
- Python忽略warning警告错误
- 抖音爬虫路上的填坑之路
- 基于Solr的空间搜索学习笔记
- hdu 1423 最长公共递增子序列
- go语言在windows编译在linux上运行的可执行程序
- 当学术大家遇到技术大拿,如何攻克数据库应用头号难题?数位产学研大咖这样解读
- 【GWT系列】实现远程过程调用
- BOA软件服务的移植和BOA服务的配置
- Java菜鸟教程 一些简单的练习
- linux文本编辑器
- Flutter 2.5 的新特性
- flashfxp v3.3.4(build1109)的密钥
- win10增加图片查看器
- uni-app设置原生标题栏渐变色
- essay 浅谈ACM盲区(上)
- 无线路由器介绍和有线路由器上网
- php 获取文章内容首图,关于文章的首图及图片版权问题
- 淘宝客微信机器人接口API开发