Анимации и setVisibility - PullRequest
20 голосов
/ 30 июня 2011

У меня есть LinearLayout, который я хочу показать / скрыть, нажав на ссылку «подробнее». Я делаю это по телефону

moreDetailsSection.setVisibility(View.VISIBLE);

или

moreDetailsSection.setVisibility(View.GONE);

чтобы показать / скрыть это. Это работает нормально, но я хотел добавить анимацию, которая бы хорошо вставляла поля макета, но запускается только при первом отображении поля, если я его скрываю и снова показываю, поле просто появляется внезапно , Вот код анимации (moreDetailsSection - это рассматриваемый макет):

      AnimationSet set = new AnimationSet(true);

      Animation animation = new AlphaAnimation(0.0f, 1.0f);
      animation.setDuration(250);
      set.addAnimation(animation);

      animation = new TranslateAnimation(
          Animation.RELATIVE_TO_SELF, 1.0f, Animation.RELATIVE_TO_SELF, 0.0f,
          Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f
      );
      animation.setDuration(150);
      set.addAnimation(animation);

      LayoutAnimationController controller =
          new LayoutAnimationController(set, 0.25f);
      moreDetailsSection.setLayoutAnimation(controller);

Любой совет, как сделать так, чтобы КАЖДЫЙ раз я показывал макет, а не только в первый раз?

Ответы [ 2 ]

14 голосов
/ 30 июня 2011

Я предполагаю, что сначала moreDetailsSection НЕВИДИМ.вам просто нужно создать объект Animation и вызвать следующий код при нажатии на ссылку более подробной информации.

moreDetailsSection.startAnimation(animation);
moreDetailsSection.setVisibility(View.VISIBLE);
2 голосов
/ 05 февраля 2016

Вы можете использовать эту строку в вашем представлении для этого макета:

android:animateLayoutChanges="true"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...