我有一个应用程序,我每4秒产生一个新的敌人。敌人用TranslateAnimation
从右到左。此动画总共需要7秒。
我现在面临的问题是,当动画运行时,每当我产生一个新敌人时,动画就会停止,并开始为新敌人制作动画。
有没有办法使用相同的TranslateAnimation动画两个不同的对象?
以防万一,这是我的动画
translate= new TranslateAnimation(
Animation.ABSOLUTE, (float) 1.0,
Animation.ABSOLUTE, (float) -4.0,
Animation.ABSOLUTE,0,
Animation.ABSOLUTE,0);
translate.setDuration(10000);
translate.setFillAfter(true);
//newIV is the enemy's ImageView
newIV.startAnimation(translate);
答案 0 :(得分:2)
您可以像这样应用动画
在xml
文件夹
anim
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:fromXDelta="100%" android:toXDelta="0%"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="500"
/>
</set>
然后在课堂上编码
final Animation RightToLeft = AnimationUtils.loadAnimation(context,
R.anim.right_to_left);
((ImageView)findViewById(R.id.yourImage))
.startAnimation(RightToLeft);
希望它会有所帮助。
答案 1 :(得分:1)
您可以将相同的动画设置为相同position.try中的不同视图以使用animationLisener
translate.setAnimationListener(new TranslateAnimation.AnimationListener() { @Override
public void onAnimationStart(Animation animation) { }
@Override
public void onAnimationRepeat(Animation animation) { }
@Override
public void onAnimationEnd(Animation animation)
{
animation.setFillAfter(false);
RelativeLayout.LayoutParams params =(RelativeLayout.LayoutParams)mLogo.getLayoutParams();
//Set your firest view layout or hide the previous newIV
//This ll avoid filckering
animation = new TranslateAnimation(0.0f, 0.0f, 0.0f, 0.0f);
animation.setDuration(1);
ImageView mLogo = new ImageView(activity);// Second enemy as u said
animation = new TranslateAnimation(
Animation.ABSOLUTE, (float) 1.0,
Animation.ABSOLUTE, (float) -4.0,
Animation.ABSOLUTE,0,
Animation.ABSOLUTE,0);
mLogo.startAnimation(animation);mLogo.setLayoutParams(params);
mLogo.clearAnimation();
mLogo.startAnimation(animation);
}
});
这个ll animate当第一个敌人结束时创建一个新的动画实例并使用。