拖动按钮后
然后摁了按钮数字7
所有按钮回到原位
这是关于按钮7的代码
number[7].setOnTouchListener(new OnTouchListener() {//设置按钮被触摸的时间
int lastX, lastY; // 记录移动的最后的位置
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
int ea = event.getAction();//获取事件类型
switch (ea) {
case MotionEvent.ACTION_DOWN: // 按下事件
lastX = (int) event.getRawX();
lastY = (int) event.getRawY();
downX = lastX;
downY = lastY;
break;
case MotionEvent.ACTION_MOVE: // 拖动事件
// 移动中动态设置位置
int dx = (int) event.getRawX() - lastX;//位移量X
int dy = (int) event.getRawY() - lastY;//位移量Y
int left = v.getLeft() + dx;
int top = v.getTop() + dy;
int right = v.getRight() + dx;
int bottom = v.getBottom() + dy;
//++限定按钮被拖动的范围
if (left < 0) {
left = 0;
right = left + v.getWidth();
}
if (right > screenWidth) {
right = screenWidth;
left = right - v.getWidth();
}
if (top < 0) {
top = 0;
bottom = top + v.getHeight();
}
if (bottom > v.getHeight()) {
bottom = v.getHeight();
top = bottom - v.getHeight();
}
//--限定按钮被拖动的范围
v.layout(left, top, right, bottom);//按钮重画
// 记录当前的位置
lastX = (int) event.getRawX();
lastY = (int) event.getRawY();
break;
case MotionEvent.ACTION_UP: // 弹起事件
//判断是单击事件或是拖动事件,位移量大于5则断定为拖动事件
if (Math.abs((int) (event.getRawX() - downX)) > 5
|| Math.abs((int) (event.getRawY() - downY)) > 5)
clickormove = false;
else
clickormove = true;
break;
}
return false;
}
});
number[7].setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(clickormove) {
utils.soundPlay(7);
// TODO Auto-generated method stub
if(flag==1){
str="";
str+=7;
et.setText(str);
flag=0;
}
else{
str+=7;
et.setText(str);
}
vi=v;
}}
});