要在Android Studio中的Windowmanager上上下拖动LinearLayout / View

时间:2018-07-19 09:53:25

标签: android drag-and-drop android-linearlayout move android-windowmanager

我正在尝试使用服务在Windowmanager上上下移动视图。 使用当前代码遇到的问题是,当我向下拖动视图时,视图会向上移动,反之亦然。

如果有使用拖动侦听器的解决方案,则非常欢迎。 这是我正在使用的代码。

linearLayout.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {


            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:

                    //remember the initial position.
                    initialX = params.x;
                    initialY = params.y;

                    //get the touch location
                    initialTouchX = event.getRawX();
                    initialTouchY = event.getRawY();
                    return true;
                case MotionEvent.ACTION_UP:
                    int Xdiff = (int) (event.getRawX() - initialTouchX);
                    int Ydiff = (int) (event.getRawY() - initialTouchY);
                    return true;
                case MotionEvent.ACTION_MOVE:
                    //Calculate the X and Y coordinates of the view.
                    params.x = initialX + (int) (event.getRawX() - initialTouchX);
                    params.y = initialY + (int) (event.getRawY() - initialTouchY);


                    //Update the layout with new X & Y coordinate
                    updateViews(linearLayout,params);
                    return true;
            }
            return false;
        }

    });

private void updateViews(final LinearLayout headImage, final WindowManager.LayoutParams params) {
    windowManager.updateViewLayout(headImage, params);
}

0 个答案:

没有答案