Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android:如何实现监视从右到左的滑动手势?

Android:如何实现监视从右到左的滑动手势?

提问于 2017-12-26 08:49:27
回答 2关注 0查看 553

我希望我的应用能够识别用户在手机屏幕上从右到左滑动的情况。

这个怎么做?

回答 2

真假二十一

发布于 2017-12-26 08:58:00

使用SwipeListView并让它处理你的手势检测。

https://github.com/liuzc/android-swipelistview

Bilibili科技

发布于 2017-12-26 08:55:22

OnSwipeTouchListener.java:

代码语言:txt
AI代码解释
复制
import android.content.Context;
代码语言:txt
AI代码解释
复制
import android.view.GestureDetector;
代码语言:txt
AI代码解释
复制
import android.view.GestureDetector.SimpleOnGestureListener;
代码语言:txt
AI代码解释
复制
import android.view.MotionEvent;
代码语言:txt
AI代码解释
复制
import android.view.View;
代码语言:txt
AI代码解释
复制
import android.view.View.OnTouchListener;
代码语言:txt
AI代码解释
复制
public class OnSwipeTouchListener implements OnTouchListener {
代码语言:txt
AI代码解释
复制
    private final GestureDetector gestureDetector;
代码语言:txt
AI代码解释
复制
    public OnSwipeTouchListener (Context ctx){
代码语言:txt
AI代码解释
复制
        gestureDetector = new GestureDetector(ctx, new GestureListener());
代码语言:txt
AI代码解释
复制
    }
代码语言:txt
AI代码解释
复制
    @Override
代码语言:txt
AI代码解释
复制
    public boolean onTouch(View v, MotionEvent event) {
代码语言:txt
AI代码解释
复制
        return gestureDetector.onTouchEvent(event);
代码语言:txt
AI代码解释
复制
    }
代码语言:txt
AI代码解释
复制
    private final class GestureListener extends SimpleOnGestureListener {
代码语言:txt
AI代码解释
复制
        private static final int SWIPE_THRESHOLD = 100;
代码语言:txt
AI代码解释
复制
        private static final int SWIPE_VELOCITY_THRESHOLD = 100;
代码语言:txt
AI代码解释
复制
        @Override
代码语言:txt
AI代码解释
复制
        public boolean onDown(MotionEvent e) {
代码语言:txt
AI代码解释
复制
            return true;
代码语言:txt
AI代码解释
复制
        }
代码语言:txt
AI代码解释
复制
        @Override
代码语言:txt
AI代码解释
复制
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
代码语言:txt
AI代码解释
复制
            boolean result = false;
代码语言:txt
AI代码解释
复制
            try {
代码语言:txt
AI代码解释
复制
                float diffY = e2.getY() - e1.getY();
代码语言:txt
AI代码解释
复制
                float diffX = e2.getX() - e1.getX();
代码语言:txt
AI代码解释
复制
                if (Math.abs(diffX) > Math.abs(diffY)) {
代码语言:txt
AI代码解释
复制
                    if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
代码语言:txt
AI代码解释
复制
                        if (diffX > 0) {
代码语言:txt
AI代码解释
复制
                            onSwipeRight();
代码语言:txt
AI代码解释
复制
                        } else {
代码语言:txt
AI代码解释
复制
                            onSwipeLeft();
代码语言:txt
AI代码解释
复制
                        }
代码语言:txt
AI代码解释
复制
                        result = true;
代码语言:txt
AI代码解释
复制
                    }
代码语言:txt
AI代码解释
复制
                }
代码语言:txt
AI代码解释
复制
                else if (Math.abs(diffY) > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) {
代码语言:txt
AI代码解释
复制
                    if (diffY > 0) {
代码语言:txt
AI代码解释
复制
                        onSwipeBottom();
代码语言:txt
AI代码解释
复制
                    } else {
代码语言:txt
AI代码解释
复制
                        onSwipeTop();
代码语言:txt
AI代码解释
复制
                    }
代码语言:txt
AI代码解释
复制
                    result = true;
代码语言:txt
AI代码解释
复制
                }
代码语言:txt
AI代码解释
复制
            } catch (Exception exception) {
代码语言:txt
AI代码解释
复制
                exception.printStackTrace();
代码语言:txt
AI代码解释
复制
            }
代码语言:txt
AI代码解释
复制
            return result;
代码语言:txt
AI代码解释
复制
        }
代码语言:txt
AI代码解释
复制
    }
代码语言:txt
AI代码解释
复制
    public void onSwipeRight() {
代码语言:txt
AI代码解释
复制
    }
代码语言:txt
AI代码解释
复制
    public void onSwipeLeft() {
代码语言:txt
AI代码解释
复制
    }
代码语言:txt
AI代码解释
复制
    public void onSwipeTop() {
代码语言:txt
AI代码解释
复制
    }
代码语言:txt
AI代码解释
复制
    public void onSwipeBottom() {
代码语言:txt
AI代码解释
复制
    }
代码语言:txt
AI代码解释
复制
}

Usage:

代码语言:txt
AI代码解释
复制
imageView.setOnTouchListener(new OnSwipeTouchListener(MyActivity.this) {
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
    public void onSwipeTop() {
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
        Toast.makeText(MyActivity.this, "top", Toast.LENGTH_SHORT).show();
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
    }
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
    public void onSwipeRight() {
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
        Toast.makeText(MyActivity.this, "right", Toast.LENGTH_SHORT).show();
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
    }
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
    public void onSwipeLeft() {
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
        Toast.makeText(MyActivity.this, "left", Toast.LENGTH_SHORT).show();
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
    }
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
    public void onSwipeBottom() {
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
        Toast.makeText(MyActivity.this, "bottom", Toast.LENGTH_SHORT).show();
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
    }
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
});
和开发者交流更多问题细节吧,去 写回答
相关文章
Android中Activity中左右滑动手势的监听
Android中Activity中左右滑动手势的监听 /* * 完成对左右划屏 */ @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: prev.set(event.getX(), event.getY()); break; ca
大师级码师
2021/09/21
1.7K0
实现列表手势向左向右滑动删除条目
该项目的实现需要如下两个步骤: 自定义SlideCutView继承ListView 在自定义的ListView加入位置判断和动画 该项目的演示图片: 该项目的代码如下:点击打开链接 该项目涉及如下三
提莫队长
2019/03/01
7930
实现列表手势向左向右滑动删除条目
小程序-监听手势滑动
添加两个事件(手指按下时,手指松开时) bindtouchstart="touchStart" //开始 bindtouchend="touchEnd"//结束 wxml <view bindtouchstart="touchStart" bindtouchend="touchEnd" ></view> wjs:首先在data下添加 data: { touchDotX:0,//X按下时坐标 touchDotY:0,//y按下时坐标 interval:null,//计时器
李维亮
2021/07/08
1.3K0
Android滑动解锁功能实现,Android_滑动解锁
图片资源:https://pan.baidu.com/s/1tkcw0tdxV78mnwHqOtcAGg
全栈程序员站长
2022/09/07
1.3K0
vue组件 - 监听APP手势滑动
参考:https://blog.csdn.net/slow097/article/details/122469863
biaoblog.cn 个人博客
2022/12/08
8980
[android] 手机卫士手势滑动切换屏幕
获取手势识别器GestureDetector对象,通过new GestureDetector(context,listener),参数:上下文,监听器
唯一Chat
2019/09/10
1.8K0
iOS 全屏侧滑手势/UIScrollView/UISlider间滑动手势冲突
方案一:这个跟UIScrollView的一个属性delaysContentTouches有关。
且行且珍惜_iOS
2018/08/27
4.2K0
iOS 全屏侧滑手势/UIScrollView/UISlider间滑动手势冲突
Bootstrap幻灯轮播如何支持触屏左右滑动手势?
  最近ytkah在学习用bootstrap搭建网站,Bootstrap能自适应pc端和手机端,并且移动设备优先,适合现如今移动营销。bootstrap是封装好的框架,需要某些功能只需调用相应的组件就可以,但有些还是没加入,比如幻灯轮播触屏左右滑动手势就不支持,大家用的设备基本是触屏的了,能用滑动交互在小屏幕上体验会更好,那么如何实现呢?一个比较简单的方法是增加一个滑动手势js插件:hammer.js,网上有很多cdn调用地址,像//cdn.bootcss.com/hammer.js/2.0.8/hamme
ytkah
2018/03/06
3.8K0
点击加载更多

相似问题

相关问答用户
平安资管 | 架构师擅长4个领域
擅长3个领域
腾讯云TDP | 高级后端开发工程师擅长3个领域
擅长4个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档