メインとセカンドという 2 つのアクティビティがあります。メインの向きは横向きと逆向きの横向き (android:screenOrientation="sensorLandscape"
マニフェスト経由) に制限され、2 つ目の向きは常に横向きです ( android:screenOrientation="landscape"
)。それらの間のクロスフェード遷移を常に維持したいと思います。私はそれを実現するためにこのコードを使用しています:
int rotationAnimation = WindowManager.LayoutParams.ROTATION_ANIMATION_CROSSFADE;
Window win = getWindow();
WindowManager.LayoutParams winParams = win.getAttributes();
winParams.rotationAnimation = rotationAnimation;
win.setAttributes(winParams);
onCreate()
inとonResume()
in の両方のアクティビティで呼び出されます。このメカニズムは、Main から Second に切り替えるとき (横向きと反転した横向きの両方) と、横向きで Second から Main に戻るときにうまく機能します。2 番目のアクティビティで反転したランドスケープにいるときに、メインに戻ろうとすると問題が発生します。この場合、標準の回転アニメーションがトリガーされます (Second は横向きにロックされ、Main は逆向きの横向きに適応します)。だからどういうわけか私のクロスフェードアニメーションは無視されます。
興味深いことに、Android 5 (Samsing Galaxy S6) ではクロスフェード アニメーションが常に適切に使用され、この問題は発生しません。他のデバイスは Android 4.4.2 および 4.4.4 を使用しています。
を使用してこれを回避しようとしましoverridePendingTransition(int enterAnim, int exitAnim)
たが、状況は少し変わりませんでした。
この問題を修正または回避するにはどうすればよいですか?