2
下面的代码应该是:Android动画和转换
当我触摸屏幕时,按钮从左上角移动到右下角。如果我再次触摸屏幕,则按钮将从右下移到左上。
但是,当我触摸屏幕时,按钮开始从TL移动到BR,但随后它跳回到TL角落!
我长时间按着屏幕的时间越长,按钮就会向BL角落“移动”。 这是为什么?我第一次触摸屏幕时,为了让按钮在一个方向上移动,我必须改变什么,而在第二次触摸屏幕时,我必须改变其他方向?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
state = false;
myLayout = (ViewGroup)findViewById(R.id.main_layout);
myLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
moveButton();
return true;
}
});
}
public void moveButton() {
View theButton = findViewById(R.id.button1);
TransitionManager.beginDelayedTransition(myLayout); //for smooth transitioning
//Change position
RelativeLayout.LayoutParams posRules = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT);
if (state) {
posRules.addRule(RelativeLayout.ALIGN_PARENT_TOP);
posRules.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
}
else {
posRules.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
posRules.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
}
theButton.setLayoutParams(posRules);
//Change size
ViewGroup.LayoutParams sizeRules = theButton.getLayoutParams();
if (state) {
sizeRules.width = 250;
sizeRules.height = 100;
}
else {
sizeRules.width = 450;
sizeRules.height = 300;
}
theButton.setLayoutParams(sizeRules);
state = !state;
}
谢谢你,解决了它。 – yaronkl