overridePendingTransition не работает
Я пытаюсь реализовать переход в моем приложении, но overridePendingTransition (anim, anim) работает неправильно.
- у меня включены переходы окна
- после отладки кода, я могу сказать, что компилятор выполняет вызов, но он не отображается
- Я попытался вызвать finish() перед overridePendingTransition () это, похоже, не имеет никакого эффекта
мой код прост и стандарт:
запуск намерения и вызов overridePendingTransition:
Intent newsIntent = new Intent(ZPFActivity.this, More2013Activity.class);
startActivity(newsIntent);
overridePendingTransition(R.anim.slide_no_move, R.anim.fade);
finish();
начальная анимация не должна ничего делать, только анимация затухания должна иметь эффект.
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>
EDIT: я забыл упомянуть тот факт, что деятельность, которую я начала все расширения "основной" деятельности. Может быть, это и есть причина проблемы?
9 ответов
попробуйте вызвать pendingTransition после вызова finish()
, например:
Intent newsIntent = new Intent(ZPFActivity.this, More2013Activity.class);
startActivity(newsIntent);
finish();
overridePendingTransition(R.anim.slide_no_move, R.anim.fade);
Если вы активируете режим отладки usb, он может отключить эффекты переходов. Введите параметры разработчика (где вы активировали режим отладки), найдите раздел пользовательского интерфейса, проверьте, отключена ли анимация в шкале перехода анимации. Если да ,установите его.5x. Готово!
попробуйте использовать этот :
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)
}
}
вместо вашего кода.
Если вы используете версию android >= 21, то сделайте android: windowActivityTransitions до true на стиль.в XML на значения-v21 следующим образом.
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:windowActivityTransitions">true</item>
</style>
перейти в настройках разработчика устройства, есть еще три варианта windows animation scale, Масштаб анимации перехода и масштаб продолжительности анимации. Убедитесь, что не все выключены. Это одна из причин, по которой я наткнулся.
Я знаю, это старый пост, но я его видел и чувствовал себя обязанным ответить на него:
Это была очень странная проблема, и это было связано устройства. В то время я использовал iOcean X7. Позже я узнал, что этот телефон не смог воспроизвести анимацию. Для некоторых он не играл анимации на любом приложении.
из 6.0 используйте этот метод для переопределения пользовательской анимации
ActivityOptions options = ActivityOptions.makeCustomAnimation(context,R.anim.slide_from_right, R.anim.slide_to_left);
Intent intent = new Intent(context, WhichActivityToOpen.class);
context.startActivity(intent, options.toBundle());
Вероятно, вы используете 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;
}
пожалуйста, проверьте ваше устройство в режим экономии энергии. в режиме энергосбережения анимация не будет работать.