android如何将WindowManger对齐设置为中心初始值,然后可以拖动到屏幕上的任何位置
我想通过WindowManger addView创建一个窗口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
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 );
工作正常如果它解决了问题,那么你可以发布你的评论作为答案(并接受它)。其他用户会更容易找到解决方案。如果它解决了问题,那么你可以发布你的评论作为答案(并接受它)。其他用户更容易找到解决方案。