伙计我设计了视图,我在该视图中添加了三个按钮。我已经为所有三个按钮提供了on_click工具。我的要求是如果我点击button_1,则按钮_2和按钮3应该移动到新位置。但问题是,在将移动动画应用到button_2之后,button_3 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);
}
}
答案 0 :(得分:1)
您已将onClickListener用于动画并移至下一个活动。将一个更改为onTouchListener ..确保在onTouchListener中返回false,以便onClick执行
答案 1 :(得分:1)
考虑使用Property Animation。
来自上述文件。
视图动画系统的另一个缺点是它只修改了绘制视图的位置,而不是实际的视图本身。例如,如果您设置了一个按钮以在屏幕上移动,则该按钮会正确绘制,但您可以单击该按钮的实际位置不会更改,因此您必须实现自己的逻辑来处理此问题。
使用属性动画将解决此问题。