Android 动画(缩放+淡出):奇怪的错误
Android animations (zoom+fade out): weird bug
我想制作一个重复的动画,我在其中放大和淡出 ImageView(两个动画同时出现)。
这是我的代码:
<com.xxxx.SquareImageView
android:id="@+id/redImageView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:src="@drawable/red_square"
android:layout_centerInParent="true"
android:visibility="invisible"
/>
float scaleMax = 1f;
Animation fadeOut = new AlphaAnimation(1, 0);
fadeOut.setStartOffset(0);
fadeOut.setDuration(1500);
Animation scale1 = new ScaleAnimation(0, scaleMax, 0, scaleMax, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
scale1.setDuration(1500);
scale1.setStartOffset(0);
animSet.setFillEnabled(true);
animSet.addAnimation(scale1);
animSet.addAnimation(fadeOut);
animSet.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
view.setVisibility(View.VISIBLE);
}
@Override
public void onAnimationEnd(Animation animation) {
view.setVisibility(View.INVISIBLE);
view.startAnimation(animSet);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
view.startAnimation(animSet);
图像正确放大和淡出。尽管如此,它在全尺寸下出现的时间很短 (0.1s),并且两个动画之间没有透明度。我不明白为什么。
有什么想法吗?
谢谢。
你一遍又一遍地启动动画集,所以为了流畅你需要
animSet.cancel();
你开始的每一个动画,在你在 onAnimationEnd() 中重新开始之前。
我想制作一个重复的动画,我在其中放大和淡出 ImageView(两个动画同时出现)。
这是我的代码:
<com.xxxx.SquareImageView
android:id="@+id/redImageView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:src="@drawable/red_square"
android:layout_centerInParent="true"
android:visibility="invisible"
/>
float scaleMax = 1f;
Animation fadeOut = new AlphaAnimation(1, 0);
fadeOut.setStartOffset(0);
fadeOut.setDuration(1500);
Animation scale1 = new ScaleAnimation(0, scaleMax, 0, scaleMax, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
scale1.setDuration(1500);
scale1.setStartOffset(0);
animSet.setFillEnabled(true);
animSet.addAnimation(scale1);
animSet.addAnimation(fadeOut);
animSet.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
view.setVisibility(View.VISIBLE);
}
@Override
public void onAnimationEnd(Animation animation) {
view.setVisibility(View.INVISIBLE);
view.startAnimation(animSet);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
view.startAnimation(animSet);
图像正确放大和淡出。尽管如此,它在全尺寸下出现的时间很短 (0.1s),并且两个动画之间没有透明度。我不明白为什么。
有什么想法吗?
谢谢。
你一遍又一遍地启动动画集,所以为了流畅你需要
animSet.cancel();
你开始的每一个动画,在你在 onAnimationEnd() 中重新开始之前。