精华内容
下载资源
问答
  • 图片手势滑动,多点触摸放大缩小 程序源码

    万次下载 热门讨论 2013-01-07 10:57:21
    android 自定义ImageView实现图片手势滑动,多点触摸放大缩小效果(仿腾讯,新浪),这里面实现多少会有不足之处,大家在运用的时候根据需求自行调整,大多都是多数图片左右切换实现,这个大家可以自定义ViewGroup...
  • Delphi XE手势滑动

    2015-06-10 16:44:51
    Delphi XE手势滑动,类似QQ的滑动界面
  • Wpf实现手势滑动demo

    2017-06-13 11:20:29
    Wpf实现手势滑动demo
  • 主要为大家详细介绍了Android实现手势滑动识别功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 手势滑动引导界面

    2014-12-10 14:59:57
    安卓程序第一次安装时的手势滑动引导界面,支持往回滑动,最后一次滑动可以直接启动MainActivity
  • 图片手势滑动

    2011-10-12 11:19:07
    可是实现多张图片的手势滑动,新手学习的好东西
  • Android开发之手势滑动(滑动手势监听)详解 在Android应用中,经常需要手势滑动操作,比如上下滑动,或左右方向滑动,处理手势滑动通常有两种方法:一种是单独实现setOnTouchListener监听器来,另一种是构建手势...

    Android开发之手势滑动(滑动手势监听)详解

     

    在Android应用中,经常需要手势滑动操作,比如上下滑动,或左右方向滑动,处理手势滑动通常有两种方法:一种是单独实现setOnTouchListener监听器来,另一种是构建手势探测器

    第一种方法,就是在要实现滑动的View中,实现OnTouchListener监听事件,然后判断KeyDonw和KeyUp 直接的位置距离来判断滑动方向,核心实现代码如下:

        /** 获取屏幕坐标点 **/
        Point startPoint;// 起始点
        Point endPoint;// 终点
        /** 记录按下的坐标点(起始点)**/
        private float mPosX = 0;
        private float mPosY = 0;
        /** 记录移动后抬起坐标点(终点)**/
        private float mCurPosX = 0;
        private float mCurPosY = 0;
    
        /**
         * 设置上下滑动作监听器
         * @author jczmdeveloper
         */
        private void setGestureListener(){
            myView.setOnTouchListener(new OnTouchListener() {
    
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    // TODO Auto-generated method stub
                    switch (event.getAction()) {
    
                    case MotionEvent.ACTION_DOWN:
                        mPosX = event.getX();
                        mPosY = event.getY();
                        break;
                    case MotionEvent.ACTION_MOVE:
                        mCurPosX = event.getX();
                        mCurPosY = event.getY();
    
                        break;
                    case MotionEvent.ACTION_UP:
                        if (mCurPosY - mPosY > 0
                                && (Math.abs(mCurPosY - mPosY) > 25)) {
                            //向下滑動
                            
                        } else if (mCurPosY - mPosY < 0
                                && (Math.abs(mCurPosY - mPosY) > 25)) {
                            //向上滑动
                            collapse();
                        }
                        
                        break;
                    }
                    return true;
                }
    
            });
        }
    第二种方法:就是构建手势探测器,如GestureDetector mygesture = new GestureDetector(this);,然后在onFling方法中根据MotionEvent的两个参数的 按下和滑动以及放开的位置和距离来判断滑动方向以及滑动速度等的。要构建GestureDetector,必须要和OnTouchListener一起使用,因为必须设置Touch监听,核心实现实例如下:
    import android.content.Context;
    import android.util.AttributeSet;
    import android.view.GestureDetector;
    import android.view.GestureDetector.OnGestureListener;
    import android.view.LayoutInflater;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.View.OnTouchListener;
    import android.view.animation.Animation;
    import android.view.animation.AnimationUtils;
    import android.widget.FrameLayout;
    import android.widget.LinearLayout;
    
    public class TagScrollView extends FrameLayout implements OnTouchListener, OnGestureListener{
        private float mPosX, mPosY, mCurPosX, mCurPosY;
        private static final int FLING_MIN_DISTANCE = 20;// 移动最小距离
        private static final int FLING_MIN_VELOCITY = 200;// 移动最大速度
        //构建手势探测器  
        GestureDetector mygesture = new GestureDetector(this);
    
        public TagScrollView(Context context) {
            this(context, null);
        }
        
        public TagScrollView(Context context, AttributeSet attrs) {
            this(context, attrs, 0);
        }
        
        public TagScrollView(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
            
            //setGestureListener();
            //设置Touch监听  
            this.setOnTouchListener(this);  
            //允许长按  
            this.setLongClickable(true);
        }
        
        
        
        
    
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            return mygesture.onTouchEvent(event);  
        }
    
        @Override
        public boolean onDown(MotionEvent e) {
            // TODO Auto-generated method stub
            return false;
        }
    
        @Override
        public void onShowPress(MotionEvent e) {
            // TODO Auto-generated method stub
            
        }
    
        @Override
        public boolean onSingleTapUp(MotionEvent e) {
            // TODO Auto-generated method stub
            return false;
        }
    
        @Override
        public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
                float distanceY) {
            // TODO Auto-generated method stub
            return false;
        }
    
        @Override
        public void onLongPress(MotionEvent e) {
            // TODO Auto-generated method stub
            
        }
    
        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
                float velocityY) {
            // TODO Auto-generated method stub
            // e1:第1个ACTION_DOWN MotionEvent   
            // e2:最后一个ACTION_MOVE MotionEvent   
            // velocityX:X轴上的移动速度(像素/秒)   
            // velocityY:Y轴上的移动速度(像素/秒)   
              
            // X轴的坐标位移大于FLING_MIN_DISTANCE,且移动速度大于FLING_MIN_VELOCITY个像素/秒   
            //向  
            if (e1.getY() - e2.getY() > FLING_MIN_DISTANCE){      
    //                     && Math.abs(velocityX) > FLING_MIN_VELOCITY) {      
                collapse();
                 }   
            //向上  
            if (e2.getY() - e1.getY() > FLING_MIN_DISTANCE      
                         && Math.abs(velocityX) > FLING_MIN_VELOCITY) {
                
            }      
               return false;     
        }  
         
    }

    应用实例如下:

    比如对一个ListView进行手势滑动监听的实现如下:

    private float mPosX, mPosY, mCurPosX, mCurPosY;//记录mListViewDevice 滑动的位置
        private static final int FLING_MIN_DISTANCE = 20;//mListView  滑动最小距离
        private static final int FLING_MIN_VELOCITY = 200;//mListView 滑动最大速度
    
    /**
         * @author jczmdeveloper
         * @desp mListView 的手势监听
         */
        private OnGestureListener listViewGestureListener = new OnGestureListener() {
            
            @Override
            public boolean onSingleTapUp(MotionEvent e) {
                // TODO Auto-generated method stub
                return false;
            }
            
            @Override
            public void onShowPress(MotionEvent e) {
                // TODO Auto-generated method stub
                
            }
            
            @Override
            public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
                    float distanceY) {
                // TODO Auto-generated method stub
                return false;
            }
            
            @Override
            public void onLongPress(MotionEvent e) {
                // TODO Auto-generated method stub
                
            }
            
            @Override
            public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
                    float velocityY) {
                // TODO Auto-generated method stub
                //向上滑动
                if (e1.getY() - e2.getY() > FLING_MIN_DISTANCE) {
                    // && Math.abs(velocityX) > FLING_MIN_VELOCITY) {
                    if (mListViewDevice.getLastVisiblePosition() == mListView
                            .getCount() - 1) {
                        //do something
                    }
                }
                // 向下滑动
                if (e2.getY() - e1.getY() > FLING_MIN_DISTANCE
                        && Math.abs(velocityX) > FLING_MIN_VELOCITY) {
                }
                
    
                return false;
            }
            
            @Override
            public boolean onDown(MotionEvent e) {
                // TODO Auto-generated method stub
                return false;
            }
        };
        /**
         * @author jczmdeveloper
         * @desp mListView 的手势探测器
         */
        GestureDetector listViewGesture = new GestureDetector(listViewGestureListener);
        /**
         * @author jczmdeveloper
         * @desp mListView 的触摸监听
         */
        private OnTouchListener listViewOnTouchListener = new OnTouchListener() {
            
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                return listViewDeviceGesture.onTouchEvent(event);
            }
        };

     

    展开全文
  • 主要介绍了vue-router 手势滑动触发返回功能,文中通过实例代码给大家介绍了vue图片左右滑动及手势缩放,需要的朋友可以参考下
  • 手机移动端手势滑动方向 根据手势距离来判断
  • android Activity左右手势滑动
  • 主要为大家详细介绍了Android实现手势滑动和简单动画效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 主要为大家详细介绍了Android自定义View实现随手势滑动的控件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 纯js实现手势滑动图片轮播
  • 最近感觉有一个Activity关闭的效果挺不错的,就是手势滑动就可以关闭当前Activity,于是就想写一篇博客和大家一起分享下!
  • Android 手势滑动源码实例

    热门讨论 2010-10-13 15:31:26
    Android 手势滑动 源码实例 使用
  • 主要介绍了微信小程序 监听手势滑动切换页面实例详解的相关资料,需要的朋友可以参考下
  • Android 手势滑动切换activity
  • 手势滑动切换activity

    热门讨论 2012-10-31 09:42:42
    tabhost+view结合使用的demo,手势滑动、选项卡的同时实现,代码清晰,注解详细,因为太懒,用的是sdk自带的那个图片,大家到时候直接换掉图片就ok了^_^
  • 手势滑动退出 Activity

    2019-01-21 14:12:48
    SlidrDemo 项目地址:AndyAls/SlidrDemo  简介:手势滑动退出 Activity 更多:作者 提 Bug 官网  标签:   效果图 1 效果图 2

    SlidrDemo

    项目地址:AndyAls/SlidrDemo 

    简介:手势滑动退出 Activity

    更多:作者   提 Bug   官网   

    标签:

     

    • 效果图 1

    效果图

    • 效果图 2

    效果图 2

    展开全文
  • Android中手势滑动监听简单实现

    千次阅读 2020-05-13 19:20:21
    实现的方式也有好几种,我这里就只实现一种:自己觉得对手势滑动的判断比较准确且稳定的一个方式。 实现 手势监听器的声明和创建 声明如下: private GestureDetector detector = null;// 声明一个手势监听器 ...

    背景

    项目中要实现控件的滑动监听其实还是挺常见的,这里就简单的做一下记录。

    实现的方式也有好几种,我这里就只实现一种:自己觉得对手势滑动的判断比较准确且稳定的一个方式。


    实现

    手势监听器的声明和创建

    • 声明如下:
    private GestureDetector detector = null;// 声明一个手势监听器
    
    • 创建如下:
    // 创建 GestureDetector 对象,并重写相关方法
            detector = new GestureDetector(this, new GestureDetector.OnGestureListener() {
    
                @Override
                public boolean onDown(MotionEvent e) {
                    return false;
                }
    
                @Override
                public void onShowPress(MotionEvent e) {
    
                }
    
                @Override
                public boolean onSingleTapUp(MotionEvent e) {
                    return false;
                }
    
                @Override
                public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
                      Log.e("TAG", "onScroll");
                      Log.e("TAG", "onScroll distanceX = " + distanceX);
                      Log.e("TAG", "onScroll distanceY = " + distanceY);
    
                    //distanceY > 0 表示上滑了
                    if (distanceY > 0){
                        
                    }
                    
                    // distanceY > 0 表示下滑了
                    if (distanceY < 0){
                        
                    }
                    
    				// 表示左滑了
                    if(distanceX > 0){
                        Log.e("TAG", "表示左滑了");
                    }
    
                    // 表示右滑了
                    if(distanceX < 0){
                        Log.e("TAG", "表示右滑了");
                    }
    
                    return true;// 事件被消费了,不会继续传递
                }
    
                @Override
                public void onLongPress(MotionEvent e) {
    
                }
    
                @Override
                public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
    
                    // 需要用户手指触摸屏幕后的一次稍微快速的滑动并且手指抬起后才会回调该方法
                    // 如果速度较慢,那么该方法不会回调(可能也正好解释了 fling:猛动 这个词的意思吧)
                    Log.e("TAG", "onFling");
    
                    return true;// 事件被消费了,不会继续传递
                }
            });
    

    上面创建的代码中,我在重写的方法添加了一些关键注释,建议同学们都了解一下,对加深自己的理解有作用。


    对重写的相关方法 onScroll() 说明

    首先看下该方法的源码:

    /**
             * Notified when a scroll occurs with the initial on down {@link MotionEvent} and the
             * current move {@link MotionEvent}. The distance in x and y is also supplied for
             * convenience.
             *
             * @param e1 The first down motion event that started the scrolling.
             * @param e2 The move motion event that triggered the current onScroll.
             * @param distanceX The distance along the X axis that has been scrolled since the last
             *              call to onScroll. This is NOT the distance between {@code e1}
             *              and {@code e2}.
             * @param distanceY The distance along the Y axis that has been scrolled since the last
             *              call to onScroll. This is NOT the distance between {@code e1}
             *              and {@code e2}.
             * @return true if the event is consumed, else false
             */
            boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY);
    

    源码讲了:当你触屏屏幕并开始滑动时就会触发这个方法,相关参数的解释也相对简单易懂

    这里根据 distanceXdistanceY 的值大小来判断手势滑动的一个具体方向

    • distanceX 参数用来判断左右方向的一个滑动,当该值大于 0 表示手势左滑,当该值小于 0 表示手势右滑
    • distanceY 参数用来判断上下方向的一个滑动,当该值大于 0 表示手势上滑,当该值小于 0 表示手势下滑

    不过我在 onScroll() 方法里面的判断只是比较粗略的(只用到了其中一个参数来做判断),如果同学们想很准确的表示左右滑动或者上下滑动,就需要用到两个参数(通过对参数进行值的约束来达到准确的判断)


    手势监听器接管View的触屏事件

    这里因为一些布局或者是控件的顶层父类其实都是 View,所以我这里拿 View 来说明。

    既然 View 有触屏事件,所以肯定要给 View 设置触摸事件,如下:

    		// 显示设置一下控件可点击
            linear.setClickable(true);
            // 线性布局设置触摸监听事件
            linear.setOnTouchListener(new View.OnTouchListener() {
                @SuppressLint("ClickableViewAccessibility")
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    // 手势监听器分析给定view(这里是linearLayout布局)的触屏事件
                    // 相当于由手势监听器来接管这个view的触屏事件
                    return detector.onTouchEvent(event);
                }
            });
    

    在触摸事件监听的代码中返回 detector.onTouchEvent(event); 表示让手势监听器来消费这个触屏事件,就相当于由手势监听器接管了该事件。

    注意:记得给 View 设置一下可点击属性为 true,让手势监听器对象能成功的消费这个 View 的触屏事件


    验证结果

    同学们只需要在判断的地方添加打印 log 日志代码,然后运行一下项目,自己手势滑动一下看看日志输出即可。

    如下图示:

    在这里插入图片描述
    这里不直观,我给出一个 demo 中的 gif动图 演示,是手势上下滑动控制月亮 亮度动画的渐变,如下:

    在这里插入图片描述

    • 提供 demo apk 下载链接

    百度网盘

    • 提取码
    xv8c
    

    感兴趣的同学可以去下载安装体验一下。


    技术永不眠,我们下期见!

    展开全文
  • 本篇文章主要介绍了android中view手势滑动冲突的解决方法,主要解决方法有两种,外部和内部拦截。有需要的可以参考下。
  • 类似一直播上下手势滑动视图切换新视图 上下滑动距离可控制是否加载新视图
  • DrawerLayout 关闭手势滑动

    千次阅读 2015-03-15 21:25:27
    有时候在android抽屉开发中,为了防止DrawerLayout的手势滑动和其他页面变换的滑动冲突,需要关闭手势滑动弹出侧边栏 我们可以调用DrawerLayout的setDrawerLockMode()函数来关闭和打开手势滑动: mDrawer_layout....

    有时候在android抽屉开发中,为了防止DrawerLayout的手势滑动和其他页面变换的滑动冲突,需要关闭手势滑动弹出侧边栏

    我们可以调用DrawerLayout的setDrawerLockMode()函数来关闭和打开手势滑动:

    mDrawer_layout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); //关闭手势滑动
    mDrawer_layout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED); //打开手势滑动
    展开全文
  • android 手势滑动,页面转换代码,滑动手指,就能划出另一个页面
  • android 手势滑动

    千次阅读 2014-11-20 19:40:32
    1、概述, 两次都是画曲线统计图用到手势滑动。hua
  • H5移动端判断手势滑动方向

    千次阅读 2017-08-23 17:55:37
    移动端判断手势滑动方向
  • Android 实现view手势滑动

    千次阅读 2016-09-27 13:54:19
    前段时间有个朋友问我在Android中怎么去实现view手势滑动,对这个实现的思路则是:监听手势触摸的坐标来实现view坐标的变化,从而实现view的滑动效果。通过Layout()方法来实现滑动,滑动后的目标位置的坐标传递给...
  • Android如何tab的内容里面实现手势滑动,不是从一个tab标签滑到另一个tab,而是一个tab的内容下进行手势滑动。 就是手势滑动的时候,实现页面卡不动,页面卡内的内容实现翻页的效果!
  • touch 移动端web手势滑动完成轮播图切换效果,此效果仅仅展示了touch功能的冰山一角,更多功能还需要朋友们努力挖掘。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,101
精华内容 15,640
关键字:

手势滑动