Как обеспечить анимацию при вызове другого действия в Android?

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

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

То, что я хочу, - то, что анимация по умолчанию не должна происходить и анимация, которую я хочу, должен произойти.

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

113
задан Alex Lockwood 2 July 2012 в 03:59
поделиться

2 ответа

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

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+, существует метод Activities overridePendingTransition . Он принимает два идентификатора ресурсов для входящей и исходящей анимации. Идентификатор 0 отключает анимацию. Вызовите его сразу после вызова startActivity.

т.е.:

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

API 3+:

Вы можете предотвратить анимацию по умолчанию (Slide in from the right) с помощью флага Intent.FLAG_ACTIVITY_NO_ANIMATION в вашем намерении.

т.е.:

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

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

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

139
ответ дан 24 November 2019 в 02:41
поделиться

Для этого необходимо использовать метод 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);
}
78
ответ дан 24 November 2019 в 02:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: