Как обеспечить анимацию при вызове другого действия в Android? - PullRequest
111 голосов
/ 16 апреля 2010

У меня есть два занятия A и B. Я хочу использовать анимацию, когда Действие A вызывает B и максимизирует анимацию, когда действие B вызывает A. Мне не нужны xml-файлы анимации.

Когда мы вызываем другое действие в Android, оно дает анимацию по умолчанию, а затем вызывает сжатую анимацию.

Я хочу, чтобы анимация по умолчанию не появлялась, и анимация, которую я хочу, должна появляться.

Можем ли мы на самом деле дать анимацию при вызове другой операции?

Ответы [ 4 ]

137 голосов
/ 29 июня 2010

Начиная с API 16, вы можете предоставить пакет параметров действий при вызове Context.startActivity (Intent, Bundle) или связанных методов. Он создается с помощью ActivityOptions builder:

Intent myIntent = new Intent(context, MyActivity.class);
ActivityOptions options = 
   ActivityOptions.makeCustomAnimation(context, R.anim.fade_in, R.anim.fade_out);
context.startActivity(myIntent, options.toBundle());

Не забудьте проверить другие методы построителя ActivityOptions и ActivityOptionsCompat , если вы используете библиотеку поддержки.



API 5 +:

Для приложений, ориентированных на уровень API 5+, существует метод «Действия» overridePendingTransition. Требуется два идентификатора ресурса для входящей и исходящей анимации. Идентификатор 0 отключит анимацию. Позвоните сразу после startActivity.

т.е:.

startActivity(new Intent(this, MyActivity.class));
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);

API 3 +:

Вы можете запретить анимацию по умолчанию (вставьте справа) с помощью флага Intent.FLAG_ACTIVITY_NO_ANIMATION в своем намерении.

то есть:.

Intent myIntent = new Intent(context, MyActivity.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
context.startActivity(myIntent);

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

Это также работает для 1.5 API (уровень 3).

78 голосов
/ 16 апреля 2010

Для достижения этого необходимо использовать метод OverridePendingTransition, который находится в классе активности . Пример анимации в папке res / anim примера apidemos. Проверь это. Более чем проверить демо в ApiDemos / App / Activity / animation .

Пример:

@Override
public void onResume(){
    // TODO LC: preliminary support for views transitions
    this.overridePendingTransition(R.anim.in_from_right, R.anim.out_to_left);
}
29 голосов
/ 09 февраля 2012

Написал учебник, чтобы вы могли анимировать вход и выход из вашей активности,

Наслаждайтесь:

http://blog.blundellapps.com/animate-an-activity/

3 голосов
/ 31 июля 2013

Jelly Bean добавляет поддержку для этого с помощью метода ActivityOptions.makeCustomAnimation () . Конечно, поскольку это только на Jelly Bean, это практически бесполезно для практических целей.

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