覆盖任务转换以使用活动转换

时间:2018-12-04 16:31:55

标签: android

我有一个需要成为singleInstance的活动。但是,这样做会改变动画。

一个明显的解决方案是使用overridePendingTransition() -有效。但是,没有公开Android的activity_open_enter动画,并且我不认为复制其内容是可以接受的解决方案(OEM或其他版本的Android可能会为其他“活动”更改动画)。

我试图通过将任务动画指向“活动”动画属性来覆盖它们,但似乎不起作用。

有没有人有任何可能的解决方案,可以像我在下面尝试的那样,将此Activity的任务启动动画设置为与系统的Activity动画相同的动画?

<style name="TaskLaunchOverrideAnimations" parent="@android:style/Animation.Activity">
    <item name="android:taskOpenEnterAnimation">?android:attr/activityOpenEnterAnimation</item>
    <item name="android:taskOpenExitAnimation">?android:attr/activityOpenExitAnimation</item>
    <item name="android:taskCloseEnterAnimation">?android:attr/activityCloseEnterAnimation</item>
    <item name="android:taskCloseExitAnimation">?android:attr/activityCloseExitAnimation</item>
    <item name="android:taskToFrontEnterAnimation">?android:attr/activityOpenEnterAnimation</item>
    <item name="android:taskToFrontExitAnimation">?android:attr/activityOpenExitAnimation</item>
    <item name="android:taskToBackEnterAnimation">?android:attr/activityCloseEnterAnimation</item>
    <item name="android:taskToBackExitAnimation">?android:attr/activityCloseExitAnimation</item>
</style>

<style name="MyActivityTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowAnimationStyle">@style/TaskLaunchOverrideAnimations</item>
</style>

注意:如果我在anim文件夹中换出了自定义动画的属性引用,则上述解决方案“有效”。但是,我希望使用系统默认的Activity启动动画–我既不能直接引用也不能复制内容(因为OEM或将来的Android版本可能使用不同的内容)。

注2:MyActivity是一项活动,允许我使用画中画模式。文档说使用singleTask似乎使用了默认的Activity动画。但是,从Android 9.0开始,使用singleTask会导致一个问题,即在Activity实例成为PiP之后,我的Activity在多个任务中的多个实例开始形成。在Android 8.0中不会发生这种情况。我的解决方案是使用singleInstance来防止在Android 9.0上出现这种情况。

0 个答案:

没有答案