2011-12-07 16 views
22

W mojej aplikacji ustawię alfa po jednej animacji. Ponieważ jak:Jak ustawić opóźnienie o 1 sekundę przed ustawieniem alfa widoku?

hideMenu = AnimationUtils.loadAnimation(getApplication(), R.anim.menu_layout_hide); 
menuLayout.startAnimation(hideMenu); 
menuLayout.setVisibility(View.GONE); 

ale chcę ustawić opóźnienie 1 sek przed Alpha ustawiony th widoku. ponieważ Z tego powodu nie widzę animacji tego układu. Więc jak to jest możliwe?

Dzięki.

Odpowiedz

45

W pliku animacji xml można użyć android:startOffset atrybut:

android:startOffset int. The amount of milliseconds the animation delays after start() is called. 
+0

Dzięki za odpowiedź. Pozwól mi spróbować. –

+0

jeśli nie masz nic przeciwko, nie ma sensu postu w animacji, ponieważ sama animacja ma metodę setStartDelay. Proszę nie brać słowa za przestępstwo, ale mówię, co czuję. – duggu

+0

@Duggu dzięki, poprawiona odpowiedź. –

68

Nie można użyć

android: startOffset int. Liczba milisekund, przez którą wywoływana jest animacja opóźnienia po uruchomieniu().

w animacji xml?

Zobacz the animation resource documentation.

+1

To powinno być oznaczone jako poprawna odpowiedź. –

17

Załóżmy, że stosując metodę widok .animate() można ustawić początek Offset:

view.animate().x(100) 
       .setDuration(5000) 
       .setStartDelay(1000); 
4

Handler jest dobra technika do osiągnięcia tego celu.

new Handler().postDelayed(new Runnable() 
{ 
    @Override 
    public void run() 
    { 
    view.startAnimation(animation); 
    } 
}, 1000); 
0

W twoim przypadku można po prostu zrobić tak

hideMenu = AnimationUtils.loadAnimation(getApplication(), R.anim.menu_layout_hide); 

hideMenu.setStartOffset(1000); 

menuLayout.startAnimation(hideMenu); 
menuLayout.setVisibility(View.GONE); 

W tym przypadku można sterować dynamicznie wartość czasu startu z działalności

Powiązane problemy