Я пытаюсь использовать заставку, чтобы покрыть задержку загрузки Карты Google (для Maps v2).AnimationListener onAnimationEnd не срабатывает при использовании postDelayed
Я хочу использовать ImageView
в FrameLayout
, которые должны исчезать через несколько секунд, и быть в состоянии перекрыть onAnimationEnd
, чтобы скрыть экран заставки ImageView
-х.
При запуске анимации без задержки, onAnimationEnd
вызывается соответствующим образом:
new Animations().animateAlphaForLayout(splashLayout, 2000);
Проблема заключается в том, когда я пытаюсь запустить анимацию с postDelayed
onAnimationEnd
не дозвонились вообще:
splashLayout.postDelayed(new Runnable() {
@Override
public void run() {
new Animations().animateAlphaForLayout(splashLayout, 2000);
}
}, 3000);
код Animations
класс это:
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.LayoutAnimationController;
public class Animations {
public void animateAlphaForLayout(final ViewGroup viewGroup, int duration) {
AnimationSet set = new AnimationSet(true);
Animation animation = new AlphaAnimation(1.0f, 0.0f);
animation.setRepeatCount(0);
animation.setFillAfter(true);
animation.setDuration(duration);
animation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation animation) {
viewGroup.setVisibility(View.GONE);
}
});
set.addAnimation(animation);
LayoutAnimationController controller = new LayoutAnimationController(set, 0.0f);
viewGroup.setLayoutAnimation(controller);
}
}
Кто-нибудь знает способ сделать это для Android 2.3 и выше (API 10+)?
Спасибо!
Вопрос в том, к какому Handler вы отправляете этот Runnable и что делает этот обработчик. Если этот обработчик является вашим основным потоком пользовательского интерфейса и он занят, он никогда не получит возможности обработать ваш запрос. –
Ой, подождите, вы отправляете его в представление, поэтому отправляете его в основной поток пользовательского интерфейса. Итак, что делает ваш основной поток пользовательского интерфейса? –
Да, я использую представление для публикации, и, как я уже сказал, запрос обрабатывается, потому что анимация работает. Единственное, что не работает, это «onAnimationEnd» слушателя. В потоке интерфейса я просто показываю SupportMapFragment. –