Android5.0之Activity的转场动画

举报
江南一点雨 发表于 2021/08/16 23:45:09 2021/08/16
【摘要】 Activity的转场动画很早就有,但是太过于单调,样式也不好看,于是Google在Android5.0之后,又推出的新的转场动画,效果还是非常炫的,今天我们一起来看一下。 1.旧转场动画回顾 首先我们还是先来看看在5.0之前如果我们想要在启动Activity时使用动画该怎么做呢? startActivity(new Intent(this, Main3Activity.c...

Activity的转场动画很早就有,但是太过于单调,样式也不好看,于是Google在Android5.0之后,又推出的新的转场动画,效果还是非常炫的,今天我们一起来看一下。

1.旧转场动画回顾

首先我们还是先来看看在5.0之前如果我们想要在启动Activity时使用动画该怎么做呢?


  
  1. startActivity(new Intent(this, Main3Activity.class));
  2. overridePendingTransition(R.anim.in,R.anim.out);

入场动画:


  
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <set xmlns:android="http://schemas.android.com/apk/res/android">
  3. <translate
  4. android:toYDelta="0"
  5. android:fromYDelta="100%"
  6. android:duration="1500"/>
  7. </set>


  
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <set xmlns:android="http://schemas.android.com/apk/res/android">
  3. <translate
  4. android:duration="1500"
  5. android:fromYDelta="0"
  6. android:toYDelta="-100%"/>
  7. </set>


2 5.0之后的转场动画

Android5.0之后Activity的出入场动画总体上来说可以分为两种,一种就是分解、滑动进入、淡入淡出,另外一种就是共享元素动画,下面我们分别就这两种动画进行说明。

2.1 分解、滑动进入、淡入淡出

1.分解

先来看一张效果图:

就是这样一种效果,那我们接下来看看这种效果要怎么实现。

首先,把之前启动Activity的代码改成下面的写法:

startActivity(new Intent(this, Main2Activity.class), ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
 


  
  1. getWindow().setEnterTransition(new Explode().setDuration(2000));
  2. getWindow().setExitTransition(new Explode().setDuration(2000));

<item name="android:windowContentTransitions">true</item>
 

2.滑动进入

有了上面的步骤,再设置滑动进入就很简单了,只需要修改Main2Activity中的两行代码即可:


  
  1. getWindow().setEnterTransition(new Slide().setDuration(2000));
  2. getWindow().setExitTransition(new Slide().setDuration(2000));


3.淡入淡出

Main2Activity修改代码如下:


  
  1. getWindow().setEnterTransition(new Fade().setDuration(2000));
  2. getWindow().setExitTransition(new Fade().setDuration(2000));


2.2 共享元素动画

共享元素动画是一个非常神奇的东东,我们先来看看效果:

可能这个Gif动画还不太清晰,我再来解释一下,在MainActivity和Main2Activity里边都有一个Button,只不过一个大一个小,从MainActivity跳转到Main2Activity时,我并没有感觉到Activity的跳转,只是觉得好像第一个页面的Button放大了,同理,当我从第二个页面回到第一个页面时,也好像Button变小了。OK,这就是我们的Activity共享元素。

当两个Activity中有同一个控件的时候,我们便可以采用共享元素动画。

使用共享元素动画的时候,我们需要首先给MainActivity和Main2Activity中的两个button分别添加android:transitionName="mybtn"属性,并且该属性的值要相同,这样系统才知道这两个控件是共享元素。设置完成之后,接下来就是启动Activity的代码了,如下:

startActivity(new Intent(this,Main2Activity.class), ActivityOptions.makeSceneTransitionAnimation(this,view,"mybtn").toBundle());
 

这时有的筒子可能有疑问了,那我如果两个页面中有多个共享元素该怎么办呢?简单,android:transitionName属性还像上面一样设置,然后在启动Activity时我们可以通过Pair.create方法来设置多个共享元素,如下:


  
  1. startActivity(new Intent(this, Main2Activity.class),
  2. ActivityOptions.makeSceneTransitionAnimation(this, Pair.create(((View) iv1),"myiv"), create(((View) textView),"mytv")).toBundle());

就这么简单,筒子们快速尝试一下吧。

以上。



文章来源: wangsong.blog.csdn.net,作者:_江南一点雨,版权归原作者所有,如需转载,请联系作者。

原文链接:wangsong.blog.csdn.net/article/details/51289789

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。