Gab*_*vak 6 animation android activity-transition shared-element-transition
我想定义两个 Activity 之间的转换。我的目标是在活动之间共享一个图像和两个文本,但我想为文本定义弧形运动(并保留图像的 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>
Run Code Online (Sandbox Code Playgroud)
<style name="AppTheme.DetailActivity" parent="AppTheme">
<item name="android:windowExitTransition">@transition/detail_exit</item>
<item name="android:windowEnterTransition">@transition/detail_enter</item>
<item name="android:windowSharedElementEnterTransition">@transition/detail_shared_enter</item>
<item name="android:windowSharedElementExitTransition">@transition/detail_shared_exit</item>
</style>
Run Code Online (Sandbox Code Playgroud)
我像这样启动 DetailActivity:
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(MainActivity.this,
Pair.create(findViewById(R.id.image), "image"),
Pair.create(findViewById(R.id.text), "text"));
Intent intent = new Intent(MainActivity.this, DetailActivity.class);
startActivity(intent, options.toBundle());
Run Code Online (Sandbox Code Playgroud)
问题是,这个 detail_shared_enter 不适用于动画:
<?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>
Run Code Online (Sandbox Code Playgroud)
有了这个,共享元素只会出现在它们的最终位置,没有任何类型的动画。windowEnterTransition 有效。
提前感谢您的帮助!
更新: 我根据本教程找到了解决方案:https : //blog.stylingandroid.com/curved-motion-part-1/
解决方法如下:
<?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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
932 次 |
| 最近记录: |