Android 将一个按钮拖动到另一个按钮位置
我想触摸按钮,并拖动到其他按钮的位置,你们可以得到这个图像清晰的想法。 请帮帮我 我也觉得这很有帮助。 但我想拖动到其他按钮位置,而不是屏幕上的其他按钮位置。我不知道如何检测按钮是否在其他按钮尺寸中输入 到目前为止,我所做的只是动画,但我不想只是直接向前移动按钮点击。 我希望用户自己移动按钮到其他按钮的位置 代码Android 将一个按钮拖动到另一个按钮位置,android,button,onclicklistener,Android,Button,Onclicklistener,我想触摸按钮,并拖动到其他按钮的位置,你们可以得到这个图像清晰的想法。 请帮帮我 我也觉得这很有帮助。 但我想拖动到其他按钮位置,而不是屏幕上的其他按钮位置。我不知道如何检测按钮是否在其他按钮尺寸中输入 到目前为止,我所做的只是动画,但我不想只是直接向前移动按钮点击。 我希望用户自己移动按钮到其他按钮的位置 代码 public class AnimationActivity extends Activity implements OnClickListener { public Button
public class AnimationActivity extends Activity implements OnClickListener {
public Button btn_a1, btn_a2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainsec);
btn_a1 = (Button) findViewById(R.id.btn_a1);
btn_a2 = (Button) findViewById(R.id.btn_a2);
btn_a1.setOnClickListener(this);
btn_a2.setOnClickListener(this);
}
@Override
public void onClick(final View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.btn_a1: {
int direction = -1;
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
RelativeLayout.LayoutParams absParams = (RelativeLayout.LayoutParams) btn_a1
.getLayoutParams();
final float xDelta = (displaymetrics.widthPixels / 2)
- absParams.leftMargin - (btn_a1.getWidth() / 2);
final Animation animation = new TranslateAnimation(0, xDelta
* direction, 0, 0);
AnimationListener animationOutListener = new AnimationListener() {
public void onAnimationEnd(Animation animation) {
btn_a2.setBackgroundDrawable(R.id.blank);// Unselect
}
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
btn_a2.setBackgroundDrawable(R.id.red);// Select
}
};
animation.setAnimationListener(animationOutListener);
animation.setDuration(1000);
btn_a2.startAnimation(animation);
break;
}
case R.id.btn_a2: {
int direction = 1;
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
RelativeLayout.LayoutParams absParams = (RelativeLayout.LayoutParams) btn_a1
.getLayoutParams();
final float xDelta = (displaymetrics.widthPixels / 2)
- absParams.leftMargin - (btn_a1.getWidth() / 2);
final Animation animation = new TranslateAnimation(0, xDelta
* direction, 0, 0);
AnimationListener animationOutListener = new AnimationListener() {
public void onAnimationEnd(Animation animation) {
btn_a1.setBackgroundDrawable(R.id.blank);// Unselect
}
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
btn_a1.setBackgroundDrawable(R.id.red);// Select
}
};
animation.setDuration(1000);
btn_a1.startAnimation(animation);
break;
}
}
}
这个怎么样:
您必须评估按钮parentViews onTouchEvents,如果您点击它,您可以启动与按钮关联的onClick方法,或者当您抬起手指时,启动适合您的应用程序的onClick方法
但是,当手指向下/移动时,您可以更改按钮坐标并触发父视图上的重画
您可能必须创建一个支持移动按钮的新视图。我不知道你是否能在布局中做到这一点