大家好,我设计了一个视图,在这个视图中添加了三个按钮。我给所有三个按钮都提供了 on_click 功能。我的要求是,如果我点击 button_1,则 button_2 和 button_3 应该移动到一个新位置。但问题是,在对 button_2 应用移动动画后,它们在新位置上的 on_click 功能失效了。
MainActivity.java
public class MainActivity extends Activity {
ImageButton slider,slidernew,sliderexisting;
boolean flag1 = true;
boolean flag2 = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//final LinearLayout container = (LinearLayout) findViewById(R.id.container);
slider = (ImageButton) findViewById(R.id.imageButton1);
slidernew = (ImageButton) findViewById(R.id.imageButton2);
sliderexisting = (ImageButton) findViewById(R.id.imageButton3);
// Set long default duration for the animator, for the purposes of this demo
//animate(slidernew).setDuration(2000);
slider.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/*int xValue = container.getWidth() - slidernew.getWidth();
int yValue = container.getHeight() - slidernew.getHeight();
animate(slidernew).x(xValue).y(yValue);*/
if(flag1==true)
{
animateSliderForward();
flag1=false;
}
else{
animateSliderBackward();
flag1=true;
}
}
});
slidernew.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
startActivity(new Intent(MainActivity.this,SecondActivity.class));
}
});
sliderexisting.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
startActivity(new Intent(MainActivity.this,SecondActivity.class));
}
});
}
void animateSliderForward(){
float fromX=0;
float toX=100;
float fromY=0;
float toY=100;
TranslateAnimation animation = new TranslateAnimation(fromX, toX, fromY, toY);
animation.setDuration(1000);
animation.setFillAfter(true);
float fromA=0;
float toA=-100;
float fromB=0;
float toB=100;
TranslateAnimation animation1 = new TranslateAnimation(fromA, toA, fromB, toB);
animation1.setDuration(1000);
animation1.setFillAfter(true);
slidernew.startAnimation(animation1);
sliderexisting.startAnimation(animation);
}
void animateSliderBackward(){
float fromX=100;
float toX=0;
float fromY=100;
float toY=0;
TranslateAnimation animation = new TranslateAnimation(fromX, toX, fromY, toY);
animation.setDuration(1000);
animation.setFillAfter(true);
float fromA=-100;
float toA=0;
float fromB=100;
float toB=0;
TranslateAnimation animation1 = new TranslateAnimation(fromA, toA, fromB, toB);
animation1.setDuration(1000);
animation1.setFillAfter(true);
slidernew.startAnimation(animation1);
sliderexisting.startAnimation(animation);
}
}