当前位置: 首页 > article >正文

Android触摸事件setOnTouchListener用法

1,首先需知道MotionEvent类一些参数特性

ACTION_DOWN: 表示用户开始触摸(在第一个点被按下时触发)
ACTION_MOVE: 当有点在屏幕上移动时触发,注意的是,由于灵敏度很高,所以基本上只要有点在屏幕上,此事件就会不停地被触发
ACTION_UP:表示用户抬起了手指(当屏幕上唯一的点被放开时触发)
ACTION_OUTSIDE: 表示用户触碰超出了正常的UI边界
ACTION_POINTER_UP:当屏幕上有多个点被按住,松开其中一个点时触发(非最后一个点)
getDownTime() //按下开始时间
getEvenTime()//事件结束时间
GetDownTime()-getEvenTime()//总共按下的时间
getX()//x轴坐标位置
getY()//y轴坐标位置

2,左右滑动,通过x轴正负计算左滑还是右滑

    //视图滑动切换设备
    private void setOnLayoutTouchListener(){

        PICIMG.setOnTouchListener(new View.OnTouchListener() {

            private float posX, posY,curPosX, curPosY;

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()){
                    case MotionEvent.ACTION_DOWN:
                        posX = event.getX();
                        posY = event.getY();
                        break;
                    case MotionEvent.ACTION_MOVE:
                        curPosX = event.getX();
                        curPosY = event.getY();
                        break;
                    case MotionEvent.ACTION_UP:
                        if ((curPosX - posX > 0) && (Math.abs(curPosX - posX) > 35)){
                            Log.v(TAG,"向右滑动");

                            position++;
                            show();

                        }
                        else if ((curPosX - posX < 0) && (Math.abs(curPosX-posX) > 35)){
                            Log.v(TAG,"向左滑动");

                            position--;
                            show();
                            }
          
                        break;
                }
                return true;
            }
        });}

3,也可以用作事件长按,通过控制时间长触发事件

  //视图滑动切换设备
    private void setOnLayoutTouchListener(){
        
        PICIMG.setOnTouchListener(new View.OnTouchListener() {

            private float posX, posY,curPosX, curPosY;

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

                      time = event.getEventTime()-event.getDownTime();
                        //如果不按压为0,按压松开之后显示时间
                        long time = event.getEventTime()-event.getDownTime();
                        //控制按多长时间触发
                        if((int)time>2000){
                            //这里处理长按保存图片
                            System.out.println("执行了吗");

       
                }
                return true;
            }
        });}


http://www.kler.cn/a/415891.html

相关文章:

  • 每日速记10道java面试题03
  • 当测试时间与测试资源有限时,你会如何优化测试策略?
  • VUE前端实现天爱滑块验证码--详细教程
  • 【通俗理解】步长和学习率在神经网络中是一回事吗?
  • JAVA项目-------医院挂号系统
  • Spring Boot开发——整合JPA配置多数据源
  • 各个排序算法基础速通万字介绍
  • STM32--MAP文件
  • 【论文复现】LoRA:大模型的低阶自适用
  • Python-链表数据结构学习(1)
  • 10个Word自动化办公脚本
  • HCIA笔记6--路由基础
  • 信息系统项目管理-论文写作方法之背景二
  • 开源的跨平台SQL 编辑器Beekeeper Studio
  • pdf.js 预览pdf的时候发票数据缺失显示不全:字体加载出错(缺失)导致部分缺失
  • qt QGraphicsPolygonItem详解
  • RVO动态避障技术方案介绍
  • 力扣--LCR 150.彩灯装饰记录II
  • 深度学习2:从零开始掌握PyTorch:数据操作不再是难题
  • 从零开发操作系统-聊一聊C语言中的头文件
  • 对于GC方面,在使用Elasticsearch时要注意什么?
  • SQL Server 实战 - 多种连接
  • 网络基础 - IP 隧道篇
  • 【Git】Git 命令参考手册
  • 定时任务删除MongoDB历史数据
  • 十四(AJAX)、AJAX、axios、常用请求方法(GET POST...)、HTTP协议、接口文档、form-serialize