【问题标题】:Android - Implementing drag-and-drop between TextViewsAndroid - 在 TextView 之间实现拖放
【发布时间】:2011-05-30 04:39:21
【问题描述】:

我希望我的 Android 应用程序的用户能够将一个 TextView (A) 的内容移动到另一个 TextView (B)。他们应该能够通过从 A 拖动并在 B 上释放来做到这一点。我尝试使用 onTouch 事件来实现这一点,特别是 ACTION_DOWN 和 ACTION_UP。我认为这将是直截了当的,但我遇到了一些问题。

尝试一

我首先尝试捕获传递给每个事件处理程序调用的视图。这对于 ACTION_DOWN 很好,因为 A 作为视图传入。但是,在 ACTION_UP 事件中,A 也作为 View 而不是 B 传递。

尝试二

我捕获 ACTION_UP 事件的原始坐标(getRawX()、regRawY()),然后将这些坐标与用户可以“拖放”到的视图的左、右、上和下进行比较。不幸的是,视图坐标似乎与事件坐标无关。

问题

如何实现这个简单的拖放或我在两次尝试中犯了什么错误。

监听代码(尝试二)

OnTouchListener PlayerListener = new OnTouchListener () {
 public boolean onTouch(View v, MotionEvent me) {
  boolean mProcessed = false;
  int mActionX = 0;
  int mActionY = 0;
  int mAction = me.getAction();
  /* Determine gesture */
  switch (mAction) {
      case MotionEvent.ACTION_DOWN:
        mProcessed = theTeams.touchPlayer(v,mAction);
        break;
      case MotionEvent.ACTION_UP:
       mActionX = (int) me.getX();
       mActionY = (int) me.getY();
       mProcessed = theTeams.endTouch(v,mActionX,mActionY);
       break;

处理程序代码(尝试二)

  public boolean endTouch(View v, int dropX, int dropY) {
   int mLeft = 0;
   int mRight = 0;
   int mTop = 0;
   int mBottom = 0;
   boolean mFound = false;
   View mView = null;
   /* Find control at that position */
             mView = (TextView) findViewById(R.id.lCourt1ok);
   mLeft = mView.getLeft();
   mRight = mView.getRight();
   mTop = mView.getTop();
   mBottom = mView.getBottom();
   if ((dropX >= mLeft) && (dropX <= mRight ) 
                           && (dropY <= mBottom) && (dropY >= mTop))
    mFound = true;

后记

好吧,当我从 RawY 坐标中减去 50 时,尝试二的情况似乎大体上没问题。有什么建议吗?

【问题讨论】:

    标签: android drag-and-drop coordinates touch-event


    【解决方案1】:

    好吧,当我从 RawY 坐标中减去 50 时,尝试二的情况似乎大体上没问题。有什么建议吗?

    我猜你有一个状态栏和一个标题栏。我认为它们每个大约 25 像素高,因此,如果使用这两个元素,屏幕上的元素将与您的预期相差 50 像素。

    【讨论】:

      猜你喜欢
      • 2011-06-01
      • 2011-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多