转场动画相关方法介绍

本文介绍了Android中与转场动画相关的几个关键方法,包括Activity.postponeEnterTransition()用于推迟动画执行,setEnterSharedElementCallback()和setExitSharedElementCallback()处理共享元素,finishAfterTransition()完成反转动画并关闭Activity,makeSceneTransitionAnimation()创建动画选项,以及onActivityReenter()处理回退时的动画。使用这些方法可以实现流畅的Activity切换效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Activity.postponeEnterTransition()
当Activity通过makeSceneTransitionAnimation启动时,调用postponeEnterTransition方法可以推迟进入的动画和共享元素动画的播放,直到所有数据加载完以后才会执行。在此之前,Activity不会被绘制到它的Window上,Window处于透明状态。这个方法可能导致返回的动画被延迟,直到所有的数据准备好。这个方法应该在onCreate(android.os.Bundle)或onActivityReenter(int, android.content.Intent)或startPostponedEnterTransition()里调用。需要调用startPostponedEnterTransition()方法让Activity开始过渡动画。如果Activity没有调用makeSceneTransitionAnimation(Activity, android.util.Pair[])方法,postponeEnterTransition方法无效。

2.Activity.setEnterSharedElementCallback(SharedElementCallback callback)
当通过ActivityOptions.makeSceneTransitionAnimation(Activity,
android.view.View, String)启动Activity时,callback将会被调用,用来处理被启动Activity的共享元素,这个方法需要将Window设置成透明:Window#FEATURE_ACTIVITY_TRANSITIONS。
3.Activity.finishAfterTransition()
反转Activity(called activity)场景进入动画,并且会触发调用Activity(calling activity)反转退出动画。当退出动画完成以后,finish()方法会被调用。如果没有进场动画,finish()方法会立即被调用,同时会执行退出动画。
4.ActivityOptions.makeSceneTransitionAnimation()
创建一个ActivityOptions用来在Activity之间进行过渡动画。此方法会携带共享元素的位置来开启另一个Activity,共享元素的位置将作为退出动画的中心点。共享元素的位置将作为被启动Activity的进入动画的中心点。调用Activity和被调用Activity的Window都必须是透明的。
5.Activity.onActivityReenter
当一个Activity(called)通过过渡动画来开启,再返回开启它的Activity(calling)时,calling Activity 会调用此方法。会传一些resultCode和一些额外的数据(数据在finishAfterTransition()方法中设置,可以是一些位置信息等),方式如下。

@Override
    public void finishAfterTransition() {

        Intent data = new Intent();
        data.putExtra(EXTRA_STARTING_ALBUM_POSITION, mStartingPosition);
        data.putExtra(EXTRA_CURRENT_ALBUM_POSITION, mCurrentPosition);
        setResult(RESULT_OK, data);
        super.finishAfterTransition();
    }

6.Activity.startPostponedEnterTransition()
如果调用了postponeEnterTransition,必须调用startPostponedEnterTransition,让Activity开始绘制。

7.Activity.setExitSharedElementCallback(SharedElementCallback callback)
当通过ActivityOptions.makeSceneTransitionAnimation(Activity, android.view.View, String)来启动Activity(called Activity)时,在启动的Activity(calling Activity)调用callback来处理共享元素。大多数调用会在返回calling Activity时调用。
8.Activity.setEnterSharedElementCallback(SharedElementCallback callback)
当通过ActivityOptions.makeSceneTransitionAnimation(Activity, android.view.View, String)来启动Activity(called Activity)时,在called Activity会调用callback,处理共享元素。
SharedElementCallback 抽象类常用方法为

可以在这个方法内对共享元素做一些调整。names 共享元素的名字 sharedElements,共享的view
public void onMapSharedElements(List<String> names, Map<String, View> sharedElements) {}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值