如何在共享元素转换后使用动画

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (47)

我使用共享元素转换转到activity2,在activity2中转换不起作用

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 code

    <?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中的转换不起作用

提问于
用户回答回答于

对于共享元素转换,您需要在两个acitivties中为相应视图提供相同的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

扫码关注云+社区

领取腾讯云代金券