【问题标题】:Double click event in androidandroid中的双击事件
【发布时间】:2010-07-14 11:26:17
【问题描述】:

如何在不使用手势检测器的情况下在android中实现双击事件?

【问题讨论】:

  • 什么是手机屏幕双击?
  • 为什么不能使用手势检测器?

标签: android android-2.2-froyo


【解决方案1】:

如果你的意思是双击,你必须使用GestureDetector.OnDoubleTapListener

【讨论】:

    【解决方案2】:

    我确信那里的所有代码都是确定第二次点击是否在第一次点击的特定时间内,否则将其视为第二次点击。无论如何,我都会这样做。

    【讨论】:

      【解决方案3】:

      只需使用 setOnTouchListener 记录第一次和第二次点击时间。如果它们非常接近,则将其确定为双击。像这样,

      public class MyActivity extends Activity {
      
          private final String DEBUG_TAG= "MyActivity";
          private long firstClick;
          private long lastClick;
          private int count; // to count click times
      
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
      
              Button mButton= (Button)findViewById(R.id.my_button);
              mButton.setOnTouchListener(new View.OnTouchListener() {
                  @Override
                  public boolean onTouch(View view, MotionEvent motionEvent) {
                      switch (motionEvent.getAction()) {
                          case MotionEvent.ACTION_DOWN:
                              // if the second happens too late, regard it as first click
                              if (firstClick != 0 && System.currentTimeMillis() - firstClick > 300) {
                                  count = 0;
                              }
                              count++;
                              if (count == 1) {
                                  firstClick = System.currentTimeMillis();
                              } else if (count == 2) {
                                  lastClick = System.currentTimeMillis();
                                  // if these two clicks is closer than 300 millis second 
                                  if (lastClick - firstClick < 300) {
                                      Log.d(DEBUG_TAG,"a double click happened");
                                  }
                              }
                              break;
                          case MotionEvent.ACTION_MOVE:
                              break;
                          case MotionEvent.ACTION_UP:
                              break;
                      }
                      return true;
                  }
              });
          }
      }
      

      【讨论】:

        【解决方案4】:

        看这里,这是用于监听触摸手势、实现和工作的 jar 库) https://github.com/NikolayKolomiytsev/zTouch

        【讨论】:

          【解决方案5】:

          查看GestureDetector的源代码并复制你需要的位(具体看isConsideredDoubleTap方法)

          https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/GestureDetector.java

          【讨论】:

          • 我正在使用图表应用程序,如果我单击该点进行双击,它将转到另一个活动。如果我使用手势检测器,如果我单击任何位置,它将转到其他活动
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-04-25
          • 2013-08-31
          • 2011-06-05
          相关资源
          最近更新 更多