Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android如何将WindowManger对齐设置为中心初始值,然后可以拖动到屏幕上的任何位置_Android - Fatal编程技术网

android如何将WindowManger对齐设置为中心初始值,然后可以拖动到屏幕上的任何位置

android如何将WindowManger对齐设置为中心初始值,然后可以拖动到屏幕上的任何位置,android,Android,我想通过WindowManger addView创建一个窗口 WindowManager.LayoutParams mLayout = new WindowManager.LayoutParams(); // set align style, usal use Gravity.TOP|Gravity.LEFT mLayout.gravity = Gravity.CENTER ; //inital place mLayout.x = 0; mLa

我想通过WindowManger addView创建一个窗口

    WindowManager.LayoutParams mLayout = new WindowManager.LayoutParams();
    // set align style, usal use Gravity.TOP|Gravity.LEFT
    mLayout.gravity = Gravity.CENTER ;
    //inital place 

    mLayout.x = 0;
    mLayout.y = 0;
但onTouch方法不能正常拖动

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

                    mTouchStartX = event.getX();
                    mTouchStartY = event.getY();

                    break;
                case MotionEvent.ACTION_MOVE:

                    mLayout.x = (int) (x - mTouchStartX );
                    mLayout.y = (int) (y - mTouchStartY );

                    break;
                case MotionEvent.ACTION_UP:

                    // update
                    mLayout.x = (int) (x - mTouchStartX );
                    mLayout.y = (int) (y - mTouchStartY );

                    mWindowManager.updateViewLayout(v, mLayout);

                    // last place

                    mTouchStartX = mTouchStartY = 0;
                    break;
                default:

当我拖动视图元素出现按钮时,为什么???

我终于找到了原因!当设置

mLayout.gravity = Gravity.CENTER ; 
屏幕X和Y的当前中心是拖动的基础,坐标为零,因此当我拖动时,我的视图元素显示为buttom

float offsetX = (SystemVal.sysWidth - ScreenUtil.dip2px(View's width))/2;
float offsetY = (SystemVal.sysHeight - ScreenUtil.dip2px(View's height))/2;
mLayout.x = (int) (x - mTouchStartX - offsetX );
mLayout.y = (int) (y - mTouchStartY - offsetY );

工作很好

我终于找到了原因!当设置

mLayout.gravity = Gravity.CENTER ; 
屏幕X和Y的当前中心是拖动的基础,坐标为零,因此当我拖动时,我的视图元素显示为buttom

float offsetX = (SystemVal.sysWidth - ScreenUtil.dip2px(View's width))/2;
float offsetY = (SystemVal.sysHeight - ScreenUtil.dip2px(View's height))/2;
mLayout.x = (int) (x - mTouchStartX - offsetX );
mLayout.y = (int) (y - mTouchStartY - offsetY );

工作正常

如果它解决了问题,那么你可以发布你的评论作为答案(并接受它)。其他用户会更容易找到解决方案。如果它解决了问题,那么你可以发布你的评论作为答案(并接受它)。其他用户更容易找到解决方案。