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