Android Activity切换过渡动画 - 奇乐云's blog - 奇乐云的个人博客

会飞的鱼

奇乐云
首页 » Android » Android Activity切换过渡动画

Android Activity切换过渡动画

先推荐这个教程的黄金搭档教程  这个教程是教会大家如何写补间动画的教程 就是自定义动画的方法

好几天都木有更新博客了,这段时间是在是太忙了,不过积累经验的习惯不能荒废,于是决定今天不管忙到多晚,一定要记录一篇

这次记录的是我刚好今天学到的一点知识,有关于activity的切换动画的。
这两天有几家企业在学校招生,面试了一家公司,经过笔试和面试,HR说今天会给我一份任务需求,让我在两天内完成(我去,时间好紧),今天收到任务书便立马放下手中的项目开始着手。任务是要完成一个智能家居类的App,想了想毕竟是给HR的不能做的太寒颤,起码的动画效果还是得有的,于是乎就有了今天的问题。
如何添加Activity的切换动画呢
先上效果图(GIF显示效果比较卡,不过实际是很流畅的)
效果.gif
5652117-a9a8254136a2a60d[1].gif
找到了两种实现办法
1. overridePendingTransition方法
在startActivity后加上这样一行代码
startActivity(new Intent(MainActivity.this , SelectWiFiActivity.class));
overridePendingTransition(R.anim.up_in, R.anim.up_out);


然后在跳转到的activity里重写finish方法
   @Override
   public void finish() {
       super.finish();
       overridePendingTransition(R.anim.down_in, R.anim.down_out);
   }


overridePendingTransition的两个参数分别是新的activity进入的动画和当前activity退出的动画
2.自定义主题style
在style.xml文件夹内加入
   <style name="AnimActivity" parent="Theme.AppCompat.Light.NoActionBar">
       <item name="android:windowAnimationStyle">@style/AnimationActivity</item>
       <item name="android:windowNoTitle">true</item>
   </style>

   <style name="AnimationActivity" parent="@android:style/Animation.Activity" >
       <item name="android:activityOpenEnterAnimation">@anim/up_in</item>
       <item name="android:activityOpenExitAnimation">@anim/up_out</item>
       <item name="android:activityCloseEnterAnimation">@anim/down_in</item>
       <item name="android:activityCloseExitAnimation">@anim/down_out</item>
   </style>


A 启动 B 时,A 从屏幕上消失,这时执行的是A的android:activityOpenExitAnimation

A 启动 B 时,B 出现在屏幕上,这时执行的是B的android:activityOpenEnterAnimation

从 B 返回A时,B从屏幕上消失,这时执行的是B的android:activityCloseExitAnimation

从 B 返回A时,A 出现在屏幕上,这时执行的是A的android:activityCloseEnterAnimation

我的动画文件,供参考
up_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
   <translate
       android:fromYDelta="100%p"
       android:toYDelta="0"
       android:duration="800"
       />
</set>


up_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
   <translate
       android:fromYDelta="0"
       android:toYDelta="-100%p"
       android:duration="800"
       />
</set>

down_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
   <translate
       android:fromYDelta="100%p"
       android:toYDelta="0"
       android:duration="800"
       />
</set>


down_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
   <translate
       android:fromYDelta="0"
       android:toYDelta="-100%p"
       android:duration="800"
       />
</set>
至此,一声感叹,animation set居然还有如此之操作?hh
更多动画效果可以参考
Android Developer API文档 (需 科 学 上 网)
使用style主题既可以应用在AndroidManifest.xml下 application的android:theme里作为全局主题动画效果,也可以单独应用在activity内单独应用于某些activity
<application
       android:allowBackup="true"
       android:icon="@mipmap/ic_launcher"
       android:label="@string/app_name"
       android:roundIcon="@mipmap/ic_launcher_round"
       android:supportsRtl="true"
       android:theme="@style/MyAppTheme">


刚使用可能会出现动画混乱导致过渡效果不理想,没关系,多尝试几次就能理解哪个参数对应了哪一步的动画了。

文章如无特别注明均为原创! 作者: 奇乐云, 转载或复制请以 超链接形式 并注明出处 奇乐云's blog - 奇乐云的个人博客
原文地址《 Android Activity切换过渡动画》发布于2019-3-4

分享到:
打赏

评论

游客

切换注册

登录

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册