我有2个简单的动画, fade_in.xml 和 fade_out.xml 。单击登录按钮时,我希望登录表单不可见。我希望在请求完成后可以看到它。第一部分按照我的预期工作,但是当请求完成时,在动画工作之前,登录表单是不可见的。
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:fromAlpha="0.0"
android:toAlpha="1.0" />
这是淡入淡出xml是
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:fromAlpha="1.0"
android:toAlpha="0.0" />
我的动画方法是
void animateStart() {
Animation animationFadeOut;
animationFadeOut = AnimationUtils.loadAnimation(context, R.anim.fade_out);
animationFadeOut.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
formLayout.setVisibility(View.GONE);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
formLayout.startAnimation(animationFadeOut);
}
和
void animateFinish() {
Animation animationFadeIn;
animationFadeIn = AnimationUtils.loadAnimation(context, R.anim.fade_in);
animationFadeIn.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
formLayout.setVisibility(View.VISIBLE);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
formLayout.startAnimation(animationFadeIn);
}
我的表单为xml
<LinearLayout
android:id="@+id/container_login_form"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:animateLayoutChanges="true"
android:layout_centerVertical="true"
android:orientation="horizontal">..</LinearLayout>
我该如何解决?
答案 0 :(得分:0)
删除动画侦听器并将setFillAfter(true)
添加到您的动画中
void animateStart() {
Animation animationFadeOut;
animationFadeOut = AnimationUtils.loadAnimation(context, R.anim.fade_out);
animationFadeOut.setFillAfter(true);
formLayout.startAnimation(animationFadeOut);
}
void animateFinish() {
Animation animationFadeIn;
animationFadeIn = AnimationUtils.loadAnimation(context, R.anim.fade_in);
animationFadeIn.setFillAfter(true);
formLayout.startAnimation(animationFadeIn);
}