【发布时间】:2016-03-18 21:10:19
【问题描述】:
我正在使用此代码来移动按钮。正在发生移动,但开始移动时按钮会向下滑动一点。 触摸时我还会更改按钮的颜色。
public boolean onTouch(View view, MotionEvent event) {
float currX,currY;
int action = event.getAction();
Button gvup = (Button)findViewById(R.id.giveup);
gvup.setBackground(getResources().getDrawable(R.drawable.btn));
switch (action ) {
case MotionEvent.ACTION_DOWN: {
startClickTime = Calendar.getInstance().getTimeInMillis();
mPrevX = event.getX();
mPrevY = event.getY();
gvup.setBackground(getResources().getDrawable(R.drawable.btn1));
break;
}
case MotionEvent.ACTION_MOVE:
{
currX = event.getRawX();
currY = event.getRawY();
ViewGroup.MarginLayoutParams marginParams = new ViewGroup.MarginLayoutParams(view.getLayoutParams());
marginParams.setMargins((int)(currX - mPrevX), (int)(currY - mPrevY),0, 0);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(marginParams);
view.setLayoutParams(layoutParams);
gvup.setBackground(getResources().getDrawable(R.drawable.btn1));
break;
}
case MotionEvent.ACTION_CANCEL:
gvup.setBackground(getResources().getDrawable(R.drawable.btn1));
break;
case MotionEvent.ACTION_UP:
long clickDuration = Calendar.getInstance().getTimeInMillis() - startClickTime;
if(clickDuration < MAX_CLICK_DURATION) {
//click event has occurred
gvup.setBackground(getResources().getDrawable(R.drawable.btn));
giveUp();
}
break;
}
return true;
}
}
代码应该可以正常工作,但不能正常工作。 如果代替
mPrevY = event.getY();
我输入
mPrevY = event.getY() + 65;
移动位置适用于许多移动设备,但不是全部,也不适用于标签。
谢谢。
【问题讨论】:
标签: android button touch motionevent movable