Как создать задержку в 1 сек, прежде чем устанавливать альфу View? - PullRequest
36 голосов
/ 07 декабря 2011

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

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

Но я хочу установить задержку в 1 сек, прежде чем Альфа установит вид. из-за этого я не могу видеть анимацию этого макета. Так как это возможно?

Спасибо.

Ответы [ 5 ]

75 голосов
/ 07 декабря 2011

Не можете ли вы использовать

android: startOffset int. Количество миллисекунд анимации Задержки после вызова start ().

в вашей анимации xml?

См. документацию по ресурсам анимации .

64 голосов
/ 07 декабря 2011

В вашем файле анимации xml вы можете использовать атрибут android:startOffset:

android:startOffset int. The amount of milliseconds the animation delays after start() is called.
18 голосов
/ 06 августа 2014

Предположим, вы используете метод представления .animate(), вы можете установить начальное смещение:

view.animate().x(100)
              .setDuration(5000)
              .setStartDelay(1000);
7 голосов
/ 21 июля 2016

Обработчик - хорошая техника для достижения этой цели.

new Handler().postDelayed(new Runnable()
{
   @Override
   public void run()
   {
     view.startAnimation(animation);
   }
}, 1000);
3 голосов
/ 12 июля 2017

В вашем случае вы можете просто сделать так

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

hideMenu.setStartOffset(1000);

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

В этом случае вы можете динамически контролировать значение времени начала из действия

...