我正在尝试设置2个布局 - 我想要一个布局向上滑动,当它完成时,另一个布局应该淡入。
我设法让它工作,但在两个动画结束时,第一个布局闪烁一次。 我该如何解决?
这是代码(第一个布局名为titleLay,第二个布局名为registerLayout) -
final TranslateAnimation slide = new TranslateAnimation(0, 0, 0,-100 );
slide.setDuration(500);
slide.setFillAfter(true);
slide.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
RelativeLayout registerLayout = (RelativeLayout) findViewById(R.id.registerLay);
Animation fadeInAnimation = AnimationUtils.loadAnimation(con, R.anim.fade_in_anim);
registerLayout.startAnimation(fadeInAnimation);
registerLayout.setVisibility(View.VISIBLE);
}
});
titleLay.startAnimation(slide);
这就是R.anim.fade_in_anim
-
<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha android:fromAlpha="0.0" android:toAlpha="1.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:duration="500"/>
</set>
编辑:如果我使用其他类型的动画(淡出,滑动等等),它可以正常工作,而不会轻弹。
谢谢!
答案 0 :(得分:1)
尝试使用 setAlpha 功能,而不是设置视图的可见性。
registerLayout.setAlpha(0f); //invisible
registerLayout.setAlpha(1f); //visible
答案 1 :(得分:0)
从onAnimationEnd
中删除declerations和initilizations,启动可能需要很长时间,因为需要从资源中解析XML,
在你的onCreate
中加入两行:
RelativeLayout registerLayout = (RelativeLayout) findViewById(R.id.registerLay);
Animation fadeInAnimation = AnimationUtils.loadAnimation(con, R.anim.fade_in_anim);
并设置幻灯片的可见性:
final TranslateAnimation slide = new TranslateAnimation(0, 0, 0,-100 );
slide.setDuration(500);
slide.setFillAfter(true);
slide.setAnimationListener(new
AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
registerLayout.startAnimation(fadeInAnimation);
registerLayout.setVisibility(View.VISIBLE);
}
});
titleLay.startAnimation(slide);
titleLay.setVisibilty(View.VISIBLE);
答案 2 :(得分:0)
如果在布局文件中结合使用animateLayoutChanges和onAnimationEnd动画,则切换View可见性将导致运行两个动画,并且视图闪烁或闪烁。设置视图可见性会导致布局animateLayoutChanges运行并淡入视图一次,然后您创建的动画也会使第二个动画也运行。