我正在使用共享元素转换,进入活动2,在活动2中,转换无效
ttb = AnimationUtils.loadAnimation(this, R.anim.ttb_animation);
slogan = findViewById(R.id.slogan);
slogan.startAnimation(ttb);
我尝试将延迟与处理程序一起使用,但是我不需要它。
Intent goto_activity2 = new Intent(SplashAct.this, Activity2.class);
ActivityOptionsCompat option = ActivityOptionsCompat
.makeSceneTransitionAnimation(SplashAct.this, app_logo, ViewCompat.getTransitionName(app_logo));
startActivity(goto_activity2, option.toBundle());
finish();
xml代码
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="800"
android:startOffset="100"
android:interpolator="@android:anim/accelerate_interpolator"
>
<translate
android:fromYDelta="350"
android:toYDelta="0"
/>
<scale
android:fromXScale="1.2"
android:fromYScale="1.2"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1.0"
android:toYScale="1.0"
/>
</set>
activity2中的转换无效
答案 0 :(得分:0)
对于共享元素转换,您需要在两个活动中为各自的视图提供相同的transtionName。 在活动A中,假设您具有图像视图
<ImageView
android:id="@+id/ivImage"
android:transitionName="transitionName"
android:scaleType="centerCrop"
android:layout_width="match_parent"
android:layout_height="160dp" />
以及您的活动B:
<ImageView
android:id="@+id/ivSenderImage"
android:transitionName="transitionName"
android:scaleType="centerCrop"
android:layout_width="match_parent"
android:layout_height="160dp" />
然后,在导航到另一个活动时,您要做的就是:
Intent intent = new Intent(AcitvityA.this, ActivityB.class);
ActivityOptionsCompat options = ActivityOptionsCompat.
makeSceneTransitionAnimation(this, (View)ivImage, "transitionName");
startActivity(intent, options.toBundle());
就这样,使用过渡名称可以确保即使源层次结构中有多个具有相同过渡名称的视图,它也基本上可以选择正确的视图以从中开始动画。
或者您也可以https://medium.com/@aitorvs/android-shared-element-transitions-for-all-b90e9361507d进行检查。和https://android-developers.googleblog.com/2018/02/continuous-shared-element-transitions.html