Подтвердить что ты не робот

OverridePendingTransition не работает

Я пытаюсь реализовать переход в своем приложении, но overridePendingTransition (anim, anim) работает некорректно.

  • У меня есть переходы окон.
  • После отладки кода я могу сказать, что компилятор выполняет вызов, но не отображается
  • Я попытался вызвать finish() перед переопределениемPendingTransition(), это не похоже на эффект

Мой код прост и стандартен:

Запуск намерения и вызов overridePendingTransition:

Intent newsIntent = new Intent(ZPFActivity.this, More2013Activity.class);
startActivity(newsIntent);
overridePendingTransition(R.anim.slide_no_move, R.anim.fade);
finish();

Начальная анимация не должна ничего делать, только анимация fade должна иметь эффект.

slide_no_move XML:

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromYDelta="0%p" android:toYDelta="0%p"
android:duration="500"/>

fade XML:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" 
 android:fillAfter="true">
 <alpha android:fromAlpha="1.0" 
        android:toAlpha="0.0"
        android:duration="500"/>
</set>

РЕДАКТИРОВАТЬ: Я забыл упомянуть о том, что действия, в которых я начинаю все , расширяют активность. Может ли это быть причиной того, что проблема?

4b9b3361

Ответ 1

Я знаю, что это старый пост, но я видел его и чувствовал себя обязанным ответить на него:

Это была очень неясная проблема, и это было связано с устройством. В то время я использовал iOcean X7. Позже я узнал, что этот телефон не смог воспроизвести анимацию. Для некоторых он не воспроизводил анимацию в ЛЮБОМ приложении.

Ответ 2

Попробуйте вызвать ожидающее переадресацию после вызова finish(), например:

Intent newsIntent = new Intent(ZPFActivity.this, More2013Activity.class);
startActivity(newsIntent);
finish();
overridePendingTransition(R.anim.slide_no_move, R.anim.fade);

Ответ 3

Если вы активируете режим отладки usb, он может отключить эффекты переходов. Войдите в опции разработчика (где вы активировали режим отладки), найдите раздел пользовательского интерфейса, проверьте, не отключена ли анимация. Если да, установите его на .5x. Готово!

Ответ 4

Попробуйте использовать это:

    public class More2013Activity extends Activity{
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          overridePendingTransition(R.anim. slide_no_move, R.anim.fade_in);
          setContentView(R.layout.more_activity)
      }
    }

вместо вашего кода.

Ответ 5

Если вы используете версию для Android >= 21, установите атрибут android: windowActivityTransitions в true в файле style.xml в значения-v21, как показано ниже.

   <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

       <item name="android:windowActivityTransitions">true</item>

   </style>

Ответ 6

Перейдите в свое устройство. Параметры разработчика. Есть еще три варианта масштабирования анимации окон, масштаб анимации перехода и масштаб анимации. Убедитесь, что все не выключено. Это одна из причин, по которым я столкнулся.

Ответ 7

Возможно, вы используете overridePendingTransition (anim, anim) в свой метод onPause(). У меня была такая же проблема, но я решаю ее крошечным трюком.

1: Определить логическое значение в вашем классе до метода onCreate()

private boolean trans=true;

@Override
protected void onCreate(Bundle savedInstanceState) {...

2: Поместите trans = false;, когда вы используете startActivity

Intent newsIntent = newIntent(ZPFActivity.this,More2013Activity.class);         
 trans = false;        
 startActivity(newsIntent);        
 overridePendingTransition(R.anim.slide_no_move, R.anim.fade);

3: И в вашем onPause() выполните это

@Override
protected void onPause() {
    if (trans) {
        overridePendingTransition(R.anim.slide_no_move, R.anim.fade);
    }
    super.onPause();
}

4: И в вашем методе onResume() сделайте это

@Override
protected void onResume() {
    super.onResume();
    trans=true;
}

Ответ 8

проверьте, что ваше устройство находится в режиме энергосбережения. в режиме энергосбережения анимация не будет работать.