Исчезает анимация мигает - Android - PullRequest
2 голосов
/ 15 февраля 2012

Я пытаюсь настроить 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);

И это XML-код 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>

Редактировать: если я использую другие типы анимации (затухание, скольжение и т. Д.), То все работает нормально, не щелкая.

Спасибо!

Ответы [ 2 ]

1 голос
/ 04 декабря 2013

Вместо настройки видимости представления, попробуйте использовать функцию setAlpha .

registerLayout.setAlpha(0f); //invisible

registerLayout.setAlpha(1f); //visible
0 голосов
/ 15 февраля 2012

Удалите declerations и initilizations из вашего onAnimationEnd, инициализация может занять много времени, так как 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);
...