80,351
社区成员
发帖
与我相关
我的任务
分享
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();
}
@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,并 设置为全局变量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;
}