Android 在活动转换中定义共享元素运动

Android 在活动转换中定义共享元素运动,android,animation,shared-element-transition,activity-transition,Android,Animation,Shared Element Transition,Activity Transition,我想定义两个活动之间的转换。我的目标是在活动之间共享一个图像和两个文本,但我希望为文本定义弧形运动(并保持图像的changeBounds) 我使用以下设置样式: <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="android:windowActivityTransitions">true</item> <item n

我想定义两个活动之间的转换。我的目标是在活动之间共享一个图像和两个文本,但我希望为文本定义弧形运动(并保持图像的changeBounds)

我使用以下设置样式:

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

    <item name="android:windowActivityTransitions">true</item>
    <item name="android:windowContentTransitions">true</item>

    <item name="android:windowSharedElementsUseOverlay">false</item>
    <item name="android:windowAllowEnterTransitionOverlap">true</item>
    <item name="android:windowAllowReturnTransitionOverlap">true</item>
</style>
<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"
           android:transitionOrdering="together">

<changeBounds>
    <targets>
        <target android:excludeId="@id/image2"/>
    </targets>
</changeBounds>

<changeBounds>
    <targets>
        <target android:targetId="@id/image2"/>
    </targets>

    <arcMotion android:maximumAngle="90"
               android:minimumHorizontalAngle="90"
               android:minimumVerticalAngle="0"/>
</changeBounds>

</transitionSet>
问题是,此细节\u共享\u输入不适用于动画:

<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"
           android:duration="@android:integer/config_mediumAnimTime">

<arcMotion android:minimumHorizontalAngle="45"
           android:minimumVerticalAngle="45">
    <targets>
        <target android:targetId="@id/image2"/>
    </targets>
</arcMotion>

<autoTransition>
    <targets>
        <target android:excludeId="@id/image2"/>
    </targets>
</autoTransition>
</transitionSet>

解决方案如下:

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

    <item name="android:windowActivityTransitions">true</item>
    <item name="android:windowContentTransitions">true</item>

    <item name="android:windowSharedElementsUseOverlay">false</item>
    <item name="android:windowAllowEnterTransitionOverlap">true</item>
    <item name="android:windowAllowReturnTransitionOverlap">true</item>
</style>
<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"
           android:transitionOrdering="together">

<changeBounds>
    <targets>
        <target android:excludeId="@id/image2"/>
    </targets>
</changeBounds>

<changeBounds>
    <targets>
        <target android:targetId="@id/image2"/>
    </targets>

    <arcMotion android:maximumAngle="90"
               android:minimumHorizontalAngle="90"
               android:minimumVerticalAngle="0"/>
</changeBounds>

</transitionSet>

  • 您必须定义动画,该动画包含您将要创建的动画 以后再定义
  • 将arcMotion放在changeBounds内
  • 最重要的一点:忽略“此处不允许弧形运动” 微弱的警告