Android5.0Activity的转场动画和共享元素

Android5.0之前要修改页面转场动画,只能去写一些view动画,然后通过overridePendingTransition方法设置进去。Android5.0之后Activity的出入场动画总体上来说可以分为两种,一种就是分解、滑动进入、淡入淡出,另外一种就是共享元素动画,下面我们分别就这两种动画进行说明:

分解:

跳转代码

//创建intnet对象
val intent = Intent(this, TwoActivity::class.java)
//创建一个Builde对象(这里值传递一个上下文对象,系统会自动封装转场动画)
val options = ActivityOptions.makeSceneTransitionAnimation(this).toBundle()
//调用两个参数的跳转方法
startActivity(intent, options)复制代码

在twoActivity页面写上:

window.enterTransition = Explode().setDuration(2000)
window.exitTransition = Explode().setDuration(2000)复制代码

比之前的页面跳转多了Bundle参数,然后另外一个页面设置设置两行代码,就能完成分解的转场动画。

滑动进入:

跳转代码

//创建intnet对象
val intent = Intent(this, TwoActivity::class.java)
//创建一个Builde对象(这里值传递一个上下文对象,系统会自动封装转场动画)
val options = ActivityOptions.makeSceneTransitionAnimation(this).toBundle()
//调用两个参数的跳转方法
startActivity(intent, options)复制代码

在twoActivity页面写上:

window.enterTransition = Slide().setDuration(2000)
window.exitTransition = Slide().setDuration(2000)复制代码

浅入浅出效果

跳转代码

//创建intnet对象
val intent = Intent(this, TwoActivity::class.java)
//创建一个Builde对象(这里值传递一个上下文对象,系统会自动封装转场动画)
val options = ActivityOptions.makeSceneTransitionAnimation(this).toBundle()
//调用两个参数的跳转方法
startActivity(intent, options)复制代码

在twoActivity页面写上:

window.enterTransition = Fade().setDuration(2000)
window.exitTransition = Fade().setDuration(2000)复制代码

共享元素

共享单个元素

共享元素和上边的代码不同的是用三个参数的makeSceneTransitionAnimation(x,y,z)方法获取一个buidle对象,然后传递过去,且要跳转的页面不需要设置window,只是需要和相关联的控件设置上transitionName属性值一样即可,类似代码如下:

页面A布局:

<ImageView
    android:id="@+id/image"
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:transitionName="@string/transition_image" />复制代码

页面A跳转代码

Intent intent = new Intent(this, TwoActivity.class);
intent.putExtra("bigUrl", bigUrl);
intent.putExtra("smallUrl", smallUrl);
ActivityOptionsCompat compat = ActivityOptionsCompat.makeSceneTransitionAnimation(MainActivity.this, image, getString(R.string.transition_image));
ActivityCompat.startActivity(MainActivity.this, intent, compat.toBundle());复制代码

参数x:是上下文对象

参数y:要共享元素的控件对象

参数z:共享元素的transitionName值

对应的页面B的布局只需要这样写即可

<ImageView
    android:id="@+id/image"
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:transitionName="@string/transition_image" />复制代码

类似微信的共享元素代码:github.com/XiFanYin/Vi…








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值