欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android5.0之Activity的转场动画的示例

程序员文章站 2023-12-17 08:46:22
activity的转场动画很早就有,但是太过于单调,样式也不好看,于是google在android5.0之后,又推出的新的转场动画,效果还是非常炫的,今天我们一起来看一下。...

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

1.旧转场动画回顾

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

startactivity(new intent(this, main3activity.class)); 
    overridependingtransition(r.anim.in,r.anim.out); 

对应的入场和出场动画就是两个补间动画,如下:

入场动画:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
  <translate 
    android:toydelta="0" 
    android:fromydelta="100%" 
    android:duration="1500"/> 
</set> 

出场动画:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
  <translate 
    android:duration="1500" 
    android:fromydelta="0" 
    android:toydelta="-100%"/> 
</set> 

这种动画是针对整个activity而言的,无法设置activity中元素的入场/出场动画。如果想要设置activity中元素的出场/入场动画可以通过设置布局上元素的元素的出/入场动画来实现。但这无疑增加了工作量。

2 5.0之后的转场动画

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

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

1.分解

先来看一张效果图:

Android5.0之Activity的转场动画的示例

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

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

复制代码 代码如下:

startactivity(new intent(this, main2activity.class), activityoptions.makescenetransitionanimation(this).tobundle()); 
 

添加完成之后,在main2activity中设置该activity的进出场动画即可:

getwindow().setentertransition(new explode().setduration(2000)); 
getwindow().setexittransition(new explode().setduration(2000)); 

ok,就是这么简单,哦,对了,大家一定要记得在styles.xml文件中添加下面一行代码,表示激活activity中元素的过渡效果:

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

2.滑动进入

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

getwindow().setentertransition(new slide().setduration(2000)); 
getwindow().setexittransition(new slide().setduration(2000)); 

显示效果如下:

Android5.0之Activity的转场动画的示例

3.淡入淡出

main2activity修改代码如下:

getwindow().setentertransition(new fade().setduration(2000)); 
    getwindow().setexittransition(new fade().setduration(2000)); 

显示效果如下:

Android5.0之Activity的转场动画的示例

2.2 共享元素动画

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

Android5.0之Activity的转场动画的示例

可能这个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());

还是上面那种启动方式的重载方法,只不过这里多了两个参数,view表示mainactivity中的共享元素(就是那个button),第二个参数表示布局文件中transitionanimation属性的值。ok,就这么简单。

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

startactivity(new intent(this, main2activity.class), 
        activityoptions.makescenetransitionanimation(this, pair.create(((view) iv1),"myiv"), create(((view) textview),"mytv")).tobundle()); 

pair.create方法中有两个参数,第一个是共享元素的实例(注意要是view类型),第二个参数是该view的transitionanimation属性的值。

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

上一篇:

下一篇: