请帮助我进行场景转换动画设置。
当我点击TextView
(FirstActivity)时,我想将这个TextView
分享给SecondActivity,视图大小改变和移动。
当我打开(或关闭)SecondActivity我的TextView
移动(箭头#1或#2)但没有大小改变。这看起来很难看。
这是我的代码:
主题(我将此主题用于FirstActivity和SecondActivity):
<style name="AppTheme.MaterialAnimation.SharedViews">
<item name="android:windowContentTransitions">true</item>
<item name="android:windowSharedElementEnterTransition">@transition/enter_shared_ui</item>
<item name="android:windowSharedElementExitTransition">@transition/exit_shared_ui</item>
</style>
enter_shard_ui.hml:
<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="4000"
android:interpolator="@android:interpolator/decelerate_cubic">
<changeBounds />
</transitionSet>
exit_shared_ui.xml
<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="4000"
android:interpolator="@android:interpolator/decelerate_cubic">
<changeBounds />
</transitionSet>
如何在场景过渡动画中更改TextView大小的变化?
更新:
此代码用于启动SecondActivity:
private fun openSecondScreen() {
val intent = Intent(this, SharedUIFinishActivity::class.java)
... // add another views to Pair
val thirdPair = Pair(tvSharedUISelect as View, getString(R.string.shared_ui_text))
val options = ActivityOptions.makeSceneTransitionAnimation(this,
... thirdPair)
startActivity(intent, options.toBundle())
}
对于两个TextView
,我使用相同的转换名称。
要使SharedElementTransition
工作,您必须为活动1和活动2中的TextView设置相同的转换名称。
确保名称相同,以便框架可以知道转换必须发生的位置。
<TextView
...
android:transitionName="my_transition"/>
在Activity1中启动Activity2
startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(getActivity(), textView, textView.getTransitionName()).toBundle());