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

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

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

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

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

Ответ 1

Начиная с 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+ существует метод 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).

Ответ 2

Для этого вы должны использовать метод 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);
}

Ответ 4

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