Android App事件交互中区分点击和长按动作以及识别手势滑动方向的讲解及实战(附源码 可直接使用)
创始人
2024-01-31 03:20:13
0

运行有问题或需要源码请点赞关注收藏后评论区留言~~~

一、区分点击和长按动作

区分点击和长按动作,只要看按压时长是否超过500毫秒即可,没超过的表示点击动作,超过了的表示长按动作。其实除了按压时长之外,按压力度也是一个重要的参考指标,通常,点击时按得比较轻,长按时按得相对比较重,依据按压时长与按压力度两项指标就可以有效得辨别点击和长按动作。

接下来实战演示,以按压点为圆心绘制源泉,观察点击和长按之时圆圈大小和信息不同

由下图可见不同得点击事件给出得信息是不同的,至于力度问题因为模拟机的问题不够精确,建议连接真机测试

 

 

代码如下

Java类 

package com.example.event;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.widget.TextView;import com.example.event.widget.ClickView;public class ClickLongActivity extends AppCompatActivity {private TextView tv_desc; // 声明一个文本视图对象@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_click_long);tv_desc = findViewById(R.id.tv_desc);ClickView cv_gesture = findViewById(R.id.cv_gesture);// 设置点击视图的手势抬起监听器cv_gesture.setLiftListener((time_interval, pressure) -> {String gesture = time_interval>500 ? "长按" : "点击";String desc = String.format("本次按压时长为%d毫秒,属于%s动作。\n按压的压力峰值为%f",time_interval, gesture, pressure);tv_desc.setText(desc);});}
}

XML文件

二、识别手势滑动的方向

除了点击和长按外,分辨手势的滑动方向也很重要,手势往左或往右代表着左右翻页,网上或者往下代表着上下滚动,另外,手势向下还可能下拉刷新,手势向上还可能表示上拉加载。

直观的看,手势在水平方向掠过,意味着左右滑动,手势在垂直方向掠过,意味着上下滚动,左右滑动的画,手势触摸的起点和终点在水平方向的位移必定大于垂直方向的唯一,反之亦然 可分为以下三个步骤

1:对于按下手指事件 把当前点标记为起点 并记录起点的横纵坐标

2:对于松开手指事件  把当前点标记为终点,并记录终点的横纵坐标

3:分别计算起点与终点的横坐标距离与纵坐标距离,根据横纵坐标的大小关系判断本次手势的滑动方向

效果如下

 

 

 

代码如下

Java类 

package com.example.event;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.widget.TextView;import com.example.event.util.DateUtil;
import com.example.event.widget.SingleTouchView;public class SlideDirectionActivity extends AppCompatActivity {private TextView tv_desc; // 声明一个文本视图对象@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_slide_direction);tv_desc = findViewById(R.id.tv_desc);SingleTouchView stv_gesture = findViewById(R.id.stv_gesture);// 设置单点触摸视图的手势飞掠监听器stv_gesture.setFlipListener((beginPos, endPos) -> {float offsetX = Math.abs(endPos.x - beginPos.x);float offsetY = Math.abs(endPos.y - beginPos.y);String gesture = "";if (offsetX > offsetY) { // 水平方向滑动gesture = (endPos.x - beginPos.x > 0) ? "向右" : "向左";} else if (offsetX < offsetY) { // 垂直方向滑动gesture = (endPos.y - beginPos.y > 0) ? "向下" : "向上";} else { // 对角线滑动gesture = "对角线";}String desc = String.format("%s 本次手势为%s滑动", DateUtil.getNowTime(), gesture);tv_desc.setText(desc);});}
}

XML文件

创作不易 觉得有帮助请点赞关注收藏~~~

相关内容

热门资讯

手动摄影新思维:从自动依赖到创... 在现代科技日新月异的时代,摄影已不仅仅是记录生活的工具,更是一种表达情感的艺术。12月13日中午,由...
天山北望:发展新潮,动能澎湃正...   岁末之际,北疆大地处处涌动着蓬勃生机与创新活力。从智能农机产销两旺到数字农田“云端”管理,从冰雪...
“一处美”→“全域美” 感受留...   山水间民居错落、孩童嬉戏  老者闲谈,一派祥和景象  留坝县武关驿镇河口村以  “片区化推进、全...
11亿元 封关后首周海南离岛免...   据海南日报,12月18日,海南自由贸易港正式启动全岛封关。封关运作首周,离岛免税购物保持增长态势...
(年终特稿)内外利好因素共振 ...   中新社香港12月25日电 题:内外利好因素共振 香港经济稳健向前  中新社记者 魏华都  202...
年终话“三农”|农田提质效 沃...   开栏的话:  农为邦本,本固邦宁。  去年12月,中央农村工作会议在北京召开。习近平总书记对做好...
晶采观察丨9.37万亿元背后 ...   近期,“爱你老己”相关话题走红全网,引发广泛关注。这股悦己消费热潮已深度融入数字消费领域,中国互...
好评中国丨“智能经济”势如破竹...   编者按:韧性,是读懂2025年中国经济的关键词。宏观承压之下,一系列“新消费”现象展现出澎湃的内...
民调:55%的俄罗斯民众认为俄...   新华社北京12月25日电 俄罗斯舆论研究中心24日基于一项调查说,超过半数俄罗斯民众认为俄乌冲突...
别让“免费看剧”成围猎老年人新...   今年,“免费看”成了不少微短剧平台吸引老年群体的新口号,不仅不需要付费解锁剧集,甚至有的平台还号...