2

现在我写了一个拖动函数,当再次拖动它会从原来的位置移动。

当我按下PopupWindow的按钮并移动时,它可以实现整个PopupWindow的移动。初始化是 Gravity.BOTTOM 的位置。

第一次是因为窗口在这个位置。所以这个举动是对的。但是第二次,当点击按钮开始移动时,它突然跳到第一个位置然后移动。

这是什么问题?

private void createPopup()
{
    LayoutInflater flater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
    View view = flater.inflate(R.layout.pop, null);

    view.findViewById(R.id.button2).setOnTouchListener(new OnTouchListener()
    {
        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_MOVE:
                    int dx = (int)event.getRawX() - lastX;
                    int dy = (int)event.getRawY() - lastY;
                    popup.update(dx, dy, -1, -1);

                    break;

            }
            return true;
        }
    });

    popup = new PopupWindow(view, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    popup.setFocusable(false);
    popup.setTouchable(true);
    popup.setOutsideTouchable(true);
    //popup.showAsDropDown(findViewById(R.id.ding), 100, 100);
    popup.showAtLocation(findViewById(R.id.button1), Gravity.BOTTOM, 0, 0);

    //
    popup.update();
}
4

0 回答 0