导航:首页 > 程序命令 > 程序员手势分析

程序员手势分析

发布时间:2023-09-23 21:30:02

1. 将来做程序员这类工作的时候打字收拾一定要正确么我经常玩游戏,手势该过来太费劲了

没错 打游戏的手法对打代码有很大影响,可以下载金山打字通进行练习,祝你如愿

2. Android 双击单击事件监听手势检测GestureDetector原理及实现

app我们常用的手势有很多的地方,比如右滑关闭界面等。手势控制分为触发动作(Touch Mechanics,用户手指在屏幕上如何动作)和触发行为(Touch Activities,界面上特定动作在特定情境逗态下引发的结果)。这是因为同样的触发动作(如单次触击)在不同情境下可能会带来不同的结果(如轻触,取消,开启/关闭指示),同样单次触发行为(如放大)可能是由多种触发动作(如捏放,双次触击,双次触击拖拽等)实现。

   返扒 一般情况下,我们知道View类有个View.OnTouchListener内部接口,通过重写他的onTouch(View v, MotionEvent event)方法,我们可以处理一些touch事件,但是这个方法太过简单,如果需要处理一些复杂的手势,用这个接口就会很麻烦(因为我们要自己根据用户触摸的轨迹去判断是什么手势)。

    Android sdk给我们提供了GestureDetector类,通过这个类我们可以识别很多的手势,主要是通过他的onTouchEvent(event)方法完成了不同手势的识别。虽然他能识别手势,但是不同的手势要怎么处理,应该是提供给程序员实现的。

一.GestureDetector简介

1.组成

GestureDetector类用来识别触摸屏的各种手势,它包含了两个接口和一个内部类:

接口:

OnGestureListener:用来监听手势事件(6种)。

OnDoubleTapListener:用来监听双击事件。

内部类:

SimpleOnGestureListener:用来监听所有的手势。实际上它实现了上述两个接口,不过方法体是空的,需要我们自己写。我们可以继承这个类,重写里面的方法进行手势处理。

2.构造

GestureDetector gestureDetector = new GestureDetector(GestureDetector.OnGestureListener listener);

GestureDetector gestureDetector = new GestureDetector(Context context,GestureDetector.OnGestureListener listener);

GestureDetector gestureDetector = new GestureDetector(Context context,GestureDetector.SimpleOnGestureListener listener);

3.方法

(1)onTouchEvent(MotionEvent ev) 分析捕捉到的触摸事件触发相应的回调函数

(2)setIsLongpressEnabled(boolean isLongpressEnabled) 设置“长按”是否可用

(3)setOnDoubleTapListener(GestureDetector.OnDoubleTapListener onDoubleTapListener) 设置双击监听器

4.使用

流程:

首先,系统捕捉屏幕的触摸事件(onTouchListener),这时还未涉及具体手势,只是简单地捕捉到触摸。

接着漏指昌,在onTouch()方法中调用GestureDetector的onTouchEvent()方法,将捕捉到的MotionEvent交给GestureDetector来处理

最后,还需要实现抽象方法。

可根据需要选择:

重写OnGestureListener并通过构造函数传入gestureDetector

重写OnDoubleTapListener并通过GestureDetector.setOnDoubleTapListener方法传入gestureDetector

重写SimpleOnGestureListener并通过构造函数传入gestureDetector

实现:

注:不要注重我写的类是什么类,要注重实现方法自定义view和activity中都可以,根据需要继承上面三种listener,传入构造函数即可;

public class TestDemo{

Context context;

public TestDemo(Context context){

this.context = context;

}

private GestureDetectordetector;

private void initView(){

detector =new GestureDetector(context, new MySimple());

detector =new GestureDetector(context, new MyGesture());

detector =new GestureDetector(context, new MyDoubleTap());

setOnTouchListener((v, event) -> {

// 事件监听交给手势类来处理

detector.onTouchEvent(event);

return true;

});

}

//与上面二选一

@Override

public boolean onTouchEvent(MotionEvent event) {

return detector.onTouchEvent(event);

}

// 手势监听器类SimpleOnGestureListener

    private class MySimple extends GestureDetector.SimpleOnGestureListener {

        @Override

        public boolean onSingleTapUp(MotionEvent e) {//一次单独的轻击抬起操作,也就是轻击一下屏幕,立刻抬起来,才会有这个触发;如果除了Down以外还有其它操作,那就不再是Single操作了,所以也就不会触发这个事件

            return super.onSingleTapUp(e);

        }

        @Override

        public void onLongPress(MotionEvent e) {//长按事件;

            super.onLongPress(e);

        }

        @Override

        public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {//在屏幕上拖动事件,只要手指移动就会执行,无论是用手拖动view,或者是以抛的动作滚动,都会多次触发,这个方法在ACTION_MOVE动作发生时就会触发他不会执行MotionEvent.ACTION_UP,通常用来实现放大缩小和移动。

            return false;

        }

        @Override

        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {//滑动屏幕,用户按下触摸屏、快速移动后松开,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE, 1个ACTION_UP触发;是个甩的动作,这个甩的动作是在一个MotionEvent.ACTION_UP(手指抬起)发生时执行,通常用来实现翻页效果

            return super.onFling(e1, e2, velocityX, velocityY);

        }

        @Override

        public void onShowPress(MotionEvent e) {//down事件发生而move或则up还没发生前触发该事件;

            super.onShowPress(e);

        }

        @Override

        public boolean onDown(MotionEvent e) {//down事件用户按下屏幕

            return super.onDown(e);

        }

        @Override

        public boolean onDoubleTap(MotionEvent e) {//双击事件

            return super.onDoubleTap(e);

        }

        @Override

        public boolean onDoubleTapEvent(MotionEvent e) {//双击间隔中还发生其他的动作。通知DoubleTap手势中的事件,包含down、up和move事件(这里指的是在双击之间发生的事件,例如在同一个地方双击会产生DoubleTap手势,而在DoubleTap手势里面还会发生down和up事件,这两个事件由该函数通知)

            return super.onDoubleTapEvent(e);

        }

        @Override

        public boolean onSingleTapConfirmed(MotionEvent e) {//单击事件。用来判定该次点击是SingleTap而不是DoubleTap,如果连续点击两次就是DoubleTap手势,如果只点击一次,系统等待一段时间后没有收到第二次点击则判定该次点击为SingleTap而不是DoubleTap,然后触发SingleTapConfirmed事件。

            return super.onSingleTapConfirmed(e);

        }

    }

// 手势监听器类GestureListener

    private class MyGesture extends GestureDetector.OnGestureListener{

        @Override

        public boolean onDown(MotionEvent e) {//down事件用户按下屏幕

            return false;

        }

        @Override

        public void onShowPress(MotionEvent e) {//down事件发生瞬间而move或则up还没发生前触发该事件;

        }

        @Override

        public boolean onSingleTapUp(MotionEvent e) {//一次单独的轻击抬起操作,也就是轻击一下屏幕,立刻抬起来,才会有这个触发;如果除了Down以外还有其它操作,那就不再是Single操作了,所以也就不会触发这个事件;

            return super.onSingleTapUp(e);

        }

        @Override

        public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {//在屏幕上拖动事件,只要手指移动就会执行,无论是用手拖动view,或者是以抛的动作滚动,都会多次触发,这个方法在ACTION_MOVE动作发生时就会触发他不会执行MotionEvent.ACTION_UP,通常用来实现放大缩小和移动。

            return false;

        }

        @Override

        public void onLongPress(MotionEvent e) {//长按事件,超过一定时长触发该事件回调;

            super.onLongPress(e);

        }

        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {//滑动屏幕,用户按下触摸屏、快速移动后松开,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE, 1个ACTION_UP触发;是个甩的动作,这个甩的动作是在一个MotionEvent.ACTION_UP(手指抬起)发生时执行,通常用来实现翻页效果

            return super.onFling(e1, e2, velocityX, velocityY);

        }

    }

// 手势监听器类SimpleOnGestureListener

    private class MyDoubleTap extends GestureDetector.OnDoubleTapListener {

        @Override

        public boolean onDoubleTap(MotionEvent e) {//双击事件

            return super.onDoubleTap(e);

        }

        @Override

        public boolean onDoubleTapEvent(MotionEvent e) {//双击间隔中还发生其他的动作。通知DoubleTap手势中的事件,包含down、up和move事件(这里指的是在双击之间发生的事件,例如在同一个地方双击会产生DoubleTap手势,而在DoubleTap手势里面还会发生down和up事件,这两个事件由该函数通知)

            return super.onDoubleTapEvent(e);

        }

        @Override

        public boolean onSingleTapConfirmed(MotionEvent e) {//单击事件。用来判定该次点击是SingleTap而不是DoubleTap,如果连续点击两次就是DoubleTap手势,如果只点击一次,系统等待一段时间后没有收到第二次点击则判定该次点击为SingleTap而不是DoubleTap,然后触发SingleTapConfirmed事件。

            return super.onSingleTapConfirmed(e);

        }

    }

}

关于onFling()和onScroll()的区别:

onFling()是甩,这个甩的动作是在一个MotionEvent.ACTION_UP(手指抬起)发生时执行,而onScroll(),只要手指移动就会执行。他不会执行MotionEvent.ACTION_UP。onFling通常用来实现翻页效果,而onScroll通常用来实现放大缩小和移动。

关于onSingleTapConfirmed和onSingleTapUp的一点区别: OnGestureListener有这样的一个方法onSingleTapUp,和onSingleTapConfirmed容易混淆。二者的区别是:onSingleTapUp,只要手抬起就会执行,而对于onSingleTapConfirmed来说,如果双击的话,则onSingleTapConfirmed不会执行

SimpleOnGestureListener是GestureDetector类的一个内部类,该类是static class,也就是说它实际上是一个外部类。可以在外部继承这个类,重写里面的手势处理方法。

1.OnDoubleTapListener是用来检测鼠标双击事件的

2.SimpleOnGestureListener实际上实现了OnGestureListener 和OnDoubleTapListener,所以它可以完成以上提到的所有手势识别(9种)

3. 如何运用python建立手势库

用什么语言不重要。不过python相对其它语言来说,开发速度是一流的。

手势库的格式与内容这个先确定下来。 是用于浏览器的手势 ,还是手机上的手势,或者是你可能做视频的识别的手势, 先明确下来。

然后就可以建立测试用例, 模拟测试算法,显示测试结果。这些算法训练都可以用python来实现。

不过大部分情况下,特别是手机上的手势,都是程序员在脑子里做一下空间想象就做出来的。不用这么复杂。

4. 手势1024是什么意思

手势1024所表达的含义,类似于“顶”、“非常棒,一级棒“;

(4)程序员手势分析扩展阅读:

1024是一种逐渐流行的回帖方式,常见于BBS、网络社区和论坛的网友交流中。其常见形式为“1024”、“1024顶”两种形式。

1024是程序员自发认定的节日,表明10月24日,是程序员节,这是由于信息量的单位1GB=1024MB,1MB=1024KB,1kb=1024Byte,程序员们就把1024作为了一种表示自己身份的符号1024。

5. 现实中程序员是怎样飞快敲代码的

敲代码很快有几个条件

1.对项目代码和结构非常熟悉,知道整个数据流的在代码中的流动过程和变化过程。知道当前新增的代码在整个项目处于哪个位置,对于数据会有产生什么新的变化。这些要心理有数。也就是从架构层面去思考代码的编写。

2.对于需求理解的很透。这样业务逻辑转成代码逻辑就不会有任何不清楚的地方。

3.已经解决了技术难点,也就是说前期测试性代码已经写过了弄清楚了,避免了突然出现的技术性难点

4.新增的代码和新增的数据结构已经仔细思考过了,并设计好。也清楚引入这些新的代码和数据结构对现有代码的整体影响

5.异常点的位置的处理方案已经安排好了。写代码一部分是正常业务流程,算法过程,但是另外一大块就是处理各种异常。当异常出现之后,是代码重试,报错后忽略,还是报错之后停止代码,还是报错后清理代码并重新恢复上一个状态,等等。这些都是要心理有数。

6.对于如何新增源代码文件,命名函数,命名文件名,命名类名,命名变量名有一整套方案。有时候想个函数名或者变量名都要卡好几分钟,就不算飞快了。别笑,想个变量名,网络十来分钟的时候多了去了。

7.外部环境已经准备好了。IDE稳定,数据库结构稳定,数据稳定,网络稳定,访问网页顺畅,准备好免打扰的牌子。准备好刷卡提需求的二维码,准备好板砖和大刀,预防产品经理提需求和改需求。

阅读全文

与程序员手势分析相关的资料

热点内容
群晖怎么设置用户访问指定文件夹 浏览:555
安卓怎么测触摸屏 浏览:593
javastring原理 浏览:315
如何关闭手机dhcp服务器 浏览:981
php免费ide 浏览:200
程序员词句 浏览:976
服务器如何禁止某个ip段 浏览:329
便签手机文件夹 浏览:768
gameloft的java游戏 浏览:110
神佑释放怎么转服务器 浏览:735
洋葱app软件怎么登录 浏览:788
两相电空气压缩机 浏览:396
基于51单片机的智能语音密码锁设计 浏览:845
mac如何用ssh登录服务器 浏览:446
appstore怎么设置 浏览:954
在哪个app买韩国女装 浏览:111
php写入文件换行 浏览:749
dsp实现fft算法 浏览:485
棋牌源码转让交易手续费 浏览:293
云上服务器贵州 浏览:647