试试把int dx int dy 变成成员变量。 现在是局部变量。

解决方案 »

  1.   

    那两个值应该不关事吧,移动的时候它都会得到个最新的值啊
    case MotionEvent.ACTION_MOVE:
                int dx = (int)event.getRawX() - lastX;
                int dy = (int)event.getRawY() - lastY;
                popup.update(dx, -dy, -1, -1);这地方应该为负的,不然上下移动刚好颠倒,不知道为什么
      

  2.   

    PopupWindow拖动有demo吗,[email protected] 谢了
      

  3.   

    这个问题如果调试的话应该很好解决。多半出现在popup.update这个方法上,你在ontouchend方法里重新设置下其位置setposition。
      

  4.   

    楼主 拖动Demo可以分享下吗 谢谢. 
      

  5.   

    楼主 拖动Demo可以分享下吗 谢谢.  
      

  6.   

    可不可以发我一份![email protected]
      

  7.   

    求分享   楼主大神  [email protected]
      

  8.   

    case MotionEvent.ACTION_DOWN:
    lastX = (int) event.getX();
    lastY = (int) event.getY();
    break;
    case MotionEvent.ACTION_MOVE:
    dx = (int) event.getX() - lastX;
    dy = (int) event.getY() - lastY;

    mScreenX += dx;
                    mScreenY += dy ;

    pop_main.update(mScreenX, mScreenY, -1, -1);

    break;
      

  9.   

    下面这个正式解决了问题
    public boolean onTouch(View v, MotionEvent event) {
    int action = event.getAction();
    switch (action) {
    case MotionEvent.ACTION_DOWN:
    lastX = (int) event.getRawX();
    lastY = (int) event.getRawY();
    break;
    case MotionEvent.ACTION_UP:
    mScreenX += dx;
    mScreenY += dy;
    break;
    case MotionEvent.ACTION_MOVE:
    dx = (int) event.getRawX() - lastX + mScreenX;
    dy =  lastY - (int)event.getRawY() + mScreenY;
    System.out.println("X2 = "+ dx+", Y2 = "+ dy);
    pop_quality.update( dx,dy, -1, -1);
    break;
    }
    return true;
    }
      

  10.   

    不对,上面那个还有个问题,第二次以后就不正常了,代码应该再改一下
    @Override
    public boolean onTouch(View v, MotionEvent event) {
    int action = event.getAction();
    switch (action) {
    case MotionEvent.ACTION_DOWN:
    lastX = (int) event.getRawX();
    lastY = (int) event.getRawY();
    break;
    case MotionEvent.ACTION_UP:
    mScreenX = dx;
    mScreenY = dy;
    break;
    case MotionEvent.ACTION_MOVE:
    dx = (int) event.getRawX() - lastX + mScreenX;
    dy =  lastY - (int)event.getRawY() + mScreenY;
    pop_quality.update( dx,dy, -1, -1);
    break;
    }
    return true;
    }
    其中mScreenX 和mScreenY 的初始值设为0,并 设置为全局变量