`Привет всем, у меня проблема с Android OnAnimationEnd. У меня два макета A и B, A - родительский макет родителя и содержит B в середине и ImageView (imv) внизу. Теперь мне нужно перевести imv из его исходного положения в макет B, который находится посреди макета A, так что в конце анимации imv будет принадлежать макету B, а не макет A. для этого, в OnAnimationEnd, я удалил imv из его родительского макета и попытался затем добавить его в макет B. Однако в конце анимация imv просто исчезнет, как только она войдет в макет B. System.out показывает, что OnAnimationEnd вызывается и макет childCount также показывает, что imv добавлен в макет B, но imv никогда не допустимо в макете B. ниже - это код, кстати, я не опытный разработчик Android. Заранее спасибо.android OnAnimationEnd, невозможно добавить изображение в макет в OnAnimationEnd
public class MainActivity extends Activity implements AnimatorListener {
ImageView imv;
RelativeLayout parentL;
RelativeLayout middleL;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imv = (ImageView) findViewById(R.id.imageView1);
imv.setOnClickListener(new MyClick(this));
parentL = (RelativeLayout) findViewById(R.id.rl);
middleL = (RelativeLayout) findViewById(R.id.rll);
}
private class MyClick implements OnClickListener {
MainActivity ma;
public MyClick(MainActivity ma) {
this.ma = ma;
}
@Override
public void onClick(View v) {
ImageView imv = (ImageView) v;
float x = middleL.getX();
float y = middleL.getY();
imv.animate().setListener(ma);
imv.animate().x(x).y(y);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public void onAnimationCancel(Animator arg0) {
}
@Override
public void onAnimationEnd(Animator anim) {
System.out.println("onAnimationEnd");
ViewGroup vg = (ViewGroup)imv.getParent();
vg.removeView(imv);
middleL.addView(imv);
System.out.println("layout child count = "+middleL.getChildCount());
}
@Override
public void onAnimationRepeat(Animator arg0) {
}
@Override
public void onAnimationStart(Animator arg0) {
System.out.println("onAnimationStart");
}
}
Спасибо Росомахи, но недействительный() не помогает , Я буду очень благодарен, если вы или кто-то отлаживаете этот код для меня, спасибо. –