我有一个片段,它使用如下代码打开地图活动:
private val openMapResultLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
presenter.onMapActivityResult(result.resultCode, result.data)
}
我用
启动了活动openMapResultLauncher.launch(intent)
我的活动是基本的,并且通过 AndroidManifest 分配了一个主题,如下所示:
<activity
android:name=".ui.main.MapActivity"
android:theme="@style/MapTheme"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustNothing"/>
这是我的主题:
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="MapTheme" parent="@style/Theme.MaterialComponents.DayNight.NoActionBar">
<item name="android:windowAnimationStyle">@style/MapTheme.WindowAnimationStyle</item>
</style>
<style name="MapTheme.WindowAnimationStyle">
<item name="android:windowEnterAnimation">@anim/activity_enter</item>
<item name="android:windowExitAnimation">@anim/activity_exit</item>
</style>
</resources>
我无法控制活动启动时运行的动画。我已经尝试了我能想到的一切,它总是只使用从中心默认动画的缩放,而我试图让它从右侧滑入。
我已经尝试过了
val options = ActivityOptionsCompat.makeCustomAnimation(requireActivity(), R.anim.activity_enter, R.anim.activity_exit)
openMapResultLauncher.launch(intent, options)
我已经尝试过了
requireActivity().overridePendingTransition(R.anim.activity_enter, R.anim.activity_exit)
我做错了什么?
基于:https://developer.android.com/develop/ui/views/animations/transitions/start-activity#custom-trans
看起来你可以直接把它放在主题中,例如
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="MapTheme" parent="@style/Theme.MaterialComponents.DayNight.NoActionBar">
<item name="android:windowEnterAnimation">@anim/activity_enter</item>
<item name="android:windowExitAnimation">@anim/activity_exit</item>
</style>
</resources>
还有其他各种主题属性:
android:activityOpenEnterAnimation
android:activityOpenExitAnimation
android:activityCloseEnterAnimation
android:activityCloseExitAnimation