>保持(超过400毫秒)
>点击
>向左滑动
>向右滑动
目前我可以使用以下代码检测前两个:
imageVIEw.setontouchListener(new VIEw.OntouchListener() { private Timer timerr = new Timer(); private long LONG_PRESS_TIMEOUT = 400; // Todo: your timeout here private boolean wasLong = false; @OverrIDe public boolean ontouch(VIEw v,MotionEvent event) { Log.d(getClass().getname(),"touch event: " + event.toString()); if (event.getAction() == MotionEvent.ACTION_DOWN) { // HolD DETECTED timerr.schedule(new TimerTask() { @OverrIDe public voID run() { SlIDeShow.this.runOnUiThread(new Runnable() { @OverrIDe public voID run() { },LONG_PRESS_TIMEOUT); return true; } if (event.getAction() == MotionEvent.ACTION_UP) { if (!isPaused && !wasLong) { // CliCK DETECTED timerr.cancel(); timerr = new Timer(); if (!wasLong) { return false; } });
现在我正在尝试使用此问题中的代码来实现向右滑动和向左滑动 *** 作. Android Swipe on List这个问题在于它适用于ListvIEw,您可以在其中为整个列表视图实现ontouchListener,并为列表项实现单独的onItemClickListener.虽然只有一个Listener可用,但我不知道如何适应这种情况.
解决方法 手势探测器是要走的路.或者,
image.setontouchListener(new VIEw.OntouchListener() { @OverrIDe public boolean ontouch(VIEw v,MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: x1 = event.getX(); y1 = event.getY(); t1 = System.currentTimeMillis(); return true; case MotionEvent.ACTION_UP: x2 = event.getX(); y2 = event.getY(); t2 = System.currentTimeMillis(); if (x1 == x2 && y1 == y2 && (t2 - t1) < CliCK_DURATION) { Toast.makeText(getActivity(),"Click",Toast.LENGTH_SHORT).show(); } else if ((t2 - t1) >= CliCK_DURATION) { Toast.makeText(getActivity(),"Long click",Toast.LENGTH_SHORT).show(); } else if (x1 > x2) { Toast.makeText(getActivity(),"left swipe",Toast.LENGTH_SHORT).show(); } else if (x2 > x1) { Toast.makeText(getActivity(),"Right swipe",Toast.LENGTH_SHORT).show(); } return true; } return false; }总结
以上是内存溢出为你收集整理的java – 检测滑动,单击,按住一个View Android全部内容,希望文章能够帮你解决java – 检测滑动,单击,按住一个View Android所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)