我想为游戏创建下一个动画:
首先,图像从正常尺寸缩小到几乎为零,
而不是将当前图像更改为" flash"位图(bitm)。
而不是使用新的位图(bitm)执行第二个动画
目前我可以分别使用这两个动画,
但不能随意使用它们。
如何等到第一个动画结束,然后才改变位图并执行第二个动画?
或者还有另一种更好的方法吗?
这是我的代码:
public class MainActivity extends Activity implements AnimationListener {
ImageView im;
Button btnStart;
Bitmap bitm;
Animation zoomOut, flash;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnStart = (Button) findViewById(R.id.btn_start);
im = (ImageView) findViewById(R.id.stopwatch);
//flash bitmap
bitm = BitmapFactory.decodeResource(getResources(), R.drawable.flash);
// loading the animation
zoomOut = AnimationUtils.loadAnimation(getApplicationContext(),
R.anim.zoom_out);
flash = AnimationUtils.loadAnimation(getApplicationContext(),
R.anim.flash);
// setting animation listeners
zoomOut.setAnimationListener(this);
flash.setAnimationListener(this);
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
im.setVisibility(View.VISIBLE);
// TODO: How to wait until this animation is finished ???
im.startAnimation(zoomOut);
// and only then change bitmap and perform second animation??
im.setImageBitmap(bitm);
im.startAnimation(flash);
}
});
}
这是我的动画: 缩小:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true" >
<scale
android:duration="500"
android:fromXScale="1"
android:fromYScale="1"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="0.1"
android:toYScale="0.1" >
</scale>
</set>
闪光灯:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true" >
<scale
android:duration="200"
android:fromXScale="0"
android:fromYScale="0"
android:pivotX="50%"
android:pivotY="50%"
android:startOffset="500"
android:toXScale="1"
android:toYScale="1" >
</scale>
<scale
android:duration="200"
android:fromXScale="1"
android:fromYScale="1"
android:pivotX="50%"
android:pivotY="50%"
android:startOffset="700"
android:toXScale="0"
android:toYScale="0" >
</scale>
</set>
答案 0 :(得分:0)
你的类正在实现AnimationListener并且你要设置两个动画来使用它,这有点奇怪;也许你正在那里做其他事情...我建议为每一个添加单独的监听器。然后在onAnimationEnd中,添加位图更改并在那里开始下一个动画,这样它将等到第一个动画结束。
zoomOut.setAnimationListener(new AnimationListener(){
@Override
public void onAnimationEnd(Animation animation) {
//put the code to do the bitmap change
//start the next animation here
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationStart(Animation animation) {
}
});