如何在场景过渡动画中更改TextView大小?

问题描述 投票:2回答:1

请帮助我进行场景转换动画设置。

这是我的想法:enter image description here

当我点击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,我使用相同的转换名称。

android animation
1个回答
1
投票

要使SharedElementTransition工作,您必须为活动1和活动2中的TextView设置相同的转换名称。

确保名称相同,以便框架可以知道转换必须发生的位置。

<TextView
    ...
    android:transitionName="my_transition"/>

在Activity1中启动Activity2

startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(getActivity(), textView, textView.getTransitionName()).toBundle());
© www.soinside.com 2019 - 2024. All rights reserved.