activity 转场动画不生效_Android动画一:Activity过渡动画详细实现原理

本文详细介绍了Android中Activity转场动画的实现原理,包括从右侧滑入、从底部弹出、从左侧滑出和从顶部滑出四种效果,并提供了具体的XML动画定义和使用示例。
摘要由CSDN通过智能技术生成

虽然 Android 5.0 之后推出了新的过渡动画方式,但通常只是用于特定的场合使用,activity.overridePendingTransition() 通用方式的过渡动画还是很常用。

1460000020485091?w=480&h=800

原理分析

startActivity(Intent(this,SecondActivity::class.java))

overridePendingTransition(enterAnim, exitAnim)

overridePendingTransition有两个参数,第一个参数(enterAnim)是作用于SecondActivity 的进入屏幕可见区域效果,第二个参数(exitAnim)是作用于当前 Activity 离开屏幕可见区域效果。

示意图

8a73014b984b25434219ee250698fd94.png

RightIn:从右边滑入屏幕(iOS默认效果)

iOS 默认的效果,新的Activity从右边(R)进入显示区域,当前Activity从左边离开显示区域到(L)。

enterAnim(activity_right_to_left_enter.xml):X轴从 100% 到 0

android:duration="300"

android:fromXDelta="100%"

android:toXDelta="0" />

exitAnim(activity_right_to_left_exit.xml):X轴从 0 到 -100%

android:duration="300"

android:fromXDelta="0"

android:toXDelta="-100%" />

使用

startActivity(Intent(this,SecondActivity::class.java))

overridePendingTransition(R.anim.activity_right_to_left_enter, R.anim.activity_right_to_left_exit)

BottomIn:从底部弹出Activity(常用效果)

一般从底部弹出新Activity,就是从B区域到屏幕可见区域,当前的Activity是保持不变的。

enterAnim(activity_bottom_to_top_enter.xml):Y轴从 100% 到 0

android:duration="300"

android:fromYDelta="100%"

android:toYDelta="0" />

exitAnim(no_anim.xml):Y轴保持不变

android:duration="300"

android:fromYDelta="0"

android:toYDelta="0"/>

使用

startActivity(Intent(this,SecondActivity::class.java))

overridePendingTransition(R.anim.activity_bottom_to_top_enter, R.anim.no_anim)

RightOut(和RightIn对应,iOS 默认效果)

前面讲了startActivity的转场动画,下面讲finish()的转场动画。overridePendingTransition有两个参数,第一个参数(enterAnim)是作用于上一个Activity的进入屏幕可见区域效果,第二个参数(exitAnim)是作用于当前 Activity 离开屏幕可见区域效果。

iOS默认的finish动画,是当前的Activity从屏幕可见区域到R区域,上一个Activity从L区域到屏幕可见区域。

enterAnim(activity_left_to_right_enter.xml):X轴从 -100% 到 0

android:duration="300"

android:fromXDelta="-100%"

android:toXDelta="0" />

exitAnim(activity_left_to_right_exit.xml):X轴从 0 到 100%

android:duration="300"

android:fromXDelta="0"

android:toXDelta="100%" />

使用

finish()

overridePendingTransition(R.anim.activity_left_to_right_enter, R.anim.activity_left_to_right_exit)

BottomOut(和BottomIn对应,常用效果)

从屏幕底部滑出效果是,当前Activity从底部滑出屏幕可见区域,上一个Activity保持不变,和BottomIn不同的是,enterAnim是不需要使用动画,因为上一个Activity已经在屏幕的后面了,只需要改变当前Activity消失的效果。

exitAnim(activity_top_to_bottom_exit.xml):Y轴从 0 到 100%

android:duration="300"

android:fromYDelta="0%"

android:toYDelta="100%" />

使用

finish()

overridePendingTransition(0, R.anim.activity_top_to_bottom_exit)

完整示例代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值