您的当前位置:首页正文

Transition 动画实现Activity跳转动画

来源:图艺博知识网

官方支持5.0以上,网上有很多4.x的实现,大家可以自行搜索

如有不正确的地方,欢迎指正。

1.首先在style中添加支持Transations

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

2.定义动画:

Activity的进入和退出动画,在res/transition/创建动画xml

Transition的动画类型:

Fade 渐显
Slide 侧滑
Explode 分裂 具体下图:

20161031101107_115.gif

图来自参考

动画文件

res/transition/signin_enter.xml

<!--slide做了一个侧滑效果。android:slideEdge="left"  指定方向。   -->
<slide  android:slideEdge="left">  
    <targets>
        <!--excludeId:不包括的界面ID-->
        <target android:excludeId="@android:id/statusBarBackground" />
        <!--表示只针对状态栏-->
        <!--<target android:targetId="@android:id/statusBarBackground"/>-->  </targets>
    </targets>
</slide>

res/transition/signin_exit.xml

<transitionSet 
    <slide android:slideEdge="left">
        <targets>
            <target android:excludeId="@android:id/statusBarBackground" />
        </targets>
    </slide>
    <fade>
        <targets>
            <target android:targetId="@id/fragment_sign_in_content" />
        </targets>
    </fade>
</transitionSet>

2.两种定义动画方式:

1、getWindow().setExitTransition(transition);
2、通过主题定义

这里采用第二种:

style.xml

 <style name="Topeka.SignInActivity">
        <item name="android:windowEnterTransition">@transition/signin_enter</item>
        <item name="android:windowExitTransition">@transition/signin_exit</item>
    </style>

androidManifest.xml:

 <activity android:name=".activity.SignInActivity"
                  android:theme="@style/Topeka.SignInActivity"
                  android:windowSoftInputMode="adjustPan">
 </activity>

3.跳转方式:

不能简单的startActivity啦

Intent starter = new Intent(activity, SignInActivity.class);
ActivityCompat.startActivity(activity,
                starter,
ActivityOptionsCompat.makeSceneTransitionAnimation(activity).toBundle());

4.完成

gif5新文件.gif
Top