android– 即使没有移动,Motionevent Action_MOVE也会一直触发X和Y.

android– 即使没有移动,Motionevent Action_MOVE也会一直触发X和Y.,第1张

概述我正在尝试简单的程序,如果移动有声音.所以在开始的时候我已经失声了–播放声音1然后每次移动它都会播放声音.在第4阶段,我从头开始玩.问题在于:当我不移动我的手指并将其保持在同一位置时,声音仍然保持1比1–计算出x和y值的触发.我怎么阻止这个?OnTouchListenerMyOnTouchLi

我正在尝试简单的程序,如果移动有声音.所以在开始的时候我已经失声了 – 播放声音1然后每次移动它都会播放声音.在第4阶段,我从头开始玩.

问题在于:当我不移动我的手指并将其保持在同一位置时,声音仍然保持1比1 – 计算出x和y值的触发.我怎么阻止这个?

OntouchListener MyOntouchListener= new OntouchListener(){public boolean ontouch(VIEw vIEw, MotionEvent event)    {    switch(event.getAction() & MotionEvent.ACTION_MASK)        {         case MotionEvent.ACTION_DOWN:           x = (int) event.getX();            y = (int) event.getY();                oldval = x+y;            break;    case MotionEvent.ACTION_MOVE:        {          Log.e("X value", "X is "+x);          Log.e("Y value", "Y is "+y);        try             {                Thread.sleep(500);            } catch (InterruptedException e) {            }            int newval= (int) (event.getX() + event.getY());             if(Math.abs(oldval-newval)>50)            {                Log.e("First", "next button");                longpressCount++;                if(longpressCount==1)                {                   Log.e("1", "button pressed");                }                else if(longpressCount==2)                {                    Log.e("2", "button pressed");                }                else if(longpressCount==3)                {                    Log.e("3", "button pressed");                }                else if(longpressCount==4)                {                    Log.e("4", "button pressed");                    longpressCount = 0;                }            }            break;         }        }        return true;    }

解决方法:

MOVE非常敏感,只要你的手指掉下来就会继续调用.在声音播放代码的末尾设置旧值,这样只有在距离该位置再移动50个距离时才会播放.

像这样的东西.

OntouchListener MyOntouchListener= new OntouchListener(){public boolean ontouch(VIEw vIEw, MotionEvent event)    {    switch(event.getAction() & MotionEvent.ACTION_MASK)        {         case MotionEvent.ACTION_DOWN:           x = (int) event.getX();            y = (int) event.getY();                oldval = x+y;            break;    case MotionEvent.ACTION_MOVE:        {          Log.e("X value", "X is "+x);          Log.e("Y value", "Y is "+y);        try             {                Thread.sleep(500);            } catch (InterruptedException e) {            }            int newval= (int) (event.getX() + event.getY());             if(Math.abs(oldval-newval)>50)            {                Log.e("First", "next button");                longpressCount++;                if(longpressCount==1)                {                   Log.e("1", "button pressed");                }                else if(longpressCount==2)                {                    Log.e("2", "button pressed");                }                else if(longpressCount==3)                {                    Log.e("3", "button pressed");                }                else if(longpressCount==4)                {                    Log.e("4", "button pressed");                    longpressCount = 0;                }                oldval = event.getX() + event.getY();            }            break;         }        }        return true;    }
总结

以上是内存溢出为你收集整理的android – 即使没有移动,Motionevent Action_MOVE也会一直触发X和Y.全部内容,希望文章能够帮你解决android – 即使没有移动,Motionevent Action_MOVE也会一直触发X和Y.所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1116368.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存