栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android中区分滑动和点击操作

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android中区分滑动和点击操作

问题:在Android应用中,如何区分用户的操作是点击操作还是滑动操作。

答:

当用户对应用内一个View控件操作时,我们在程序中对View进行绑定Touch事件的监听(android.view.View.OnTouchListener)后会发现。

用户手指的一次完整操作,一定会经过3个基本的事件,分别是:

android.view.MotionEvent#ACTION_DOWN//Down事件
android.view.MotionEvent#ACTION_MOVE//Move事件
android.view.MotionEvent#ACTION_UP//Up事件

可是,当用户手指离开屏幕的时候,我们如何来判断用户的操作意图呢,是点击还是滑动?

在这里我们可以通过对Move事件时间的长短和移动的距离来判断用户是点击还是滑动操作。

下面走Demo:

private float DownX, DownY = 0;
private float moveX, moveY = 0;
private long currentMS, moveTime = 0;
......省略

mFloatView.setonTouchListener(new View.onTouchListener() {

            @SuppressLint("ClickableViewAccessibility")
            @Override
            public boolean onTouch(View v, MotionEvent event) {

                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        DownX = event.getX();
                        DownY = event.getY();
                        currentMS = System.currentTimeMillis();
                        break;
                    case MotionEvent.ACTION_MOVE:
                        DownX = event.getX();
                        DownY = event.getY();
                        moveX += Math.abs(event.getRawX() - DownX);//x轴移动距离
                        moveY += Math.abs(event.getRawY() - DownY);//y轴移动距离

                        break;
                    case MotionEvent.ACTION_UP:
                        moveTime = System.currentTimeMillis() - currentMS;

                        //判断是滑动还是点击操作、判断是否继续传递信号
                        if (moveTime < 300 && moveX < 20 && moveY < 20) {//点击事件
                            return false;
                        } else {//滑动事件

                            return true;//返回true,表示不再执行后面的事件
                        }
                        moveX = moveY = 0;//归零
                    default:
                        break;
                }

                return false;
            }
        });

在此记录与总结,2021年 10月 05日 星期二 17:24:52 CST。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/295269.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号