Activity转场动画
2017-05-11 11:21
148 查看
小记:需求说要改改Launcher启动Activity时,Launcher和Activity跳转的动画,让跳转更自然。
。。。哔哩哔哩哔哩。。。经过小编一番百度之后发现,
2、overridePendingTransition(int enterAnim, intexitAnim)
Launcher启动Activity时,新activity界面的出现和Launcher的退出衔接动画。
这两种方式只能实现从Launcher启动Activity的动画,从第三方应用返回Launcher还是系统动画。
这两种的实现方式都很容易百度到,随手小记,记录一下知识点。
好吧,真正的原因是,小编也在摸索中,,,
*******************************************************************************************************
*******************************************************************************************************
经过几天的摸索,从Launcher启动应用(startActivity)和从应用返回Launcher的转场动画都找到了修改点。
下面简单的介绍一下:
第一个参数intent表示启动哪个应用,第二个参数bundle表示动画。
这里的动画小编使用xml方式:
这里,第一个参数表示startActivity时,即将进入的Activity动画、第二个表示startActivity时,Launcher退出的动画。
跟踪framework/base/services/core/java/com/android/server/wm/AppTransition.java中loadAnimation方法。
发现从第三方应用返回Launcher时,上面方法中的transit值为13,对应的case见下图:
然后根据enter标记判断出是退出的应用还是进入的应用分别拿到不同的动画,并取值framework里默认的动画。
然后,小编猜测,既然framework有默认的动画,如果改了这里,那就改了所有这种情况的动画。由于第一次接触framework层代码,没敢直接改。
(但应该可以应用自己设置这两个属性的动画,心里默默的想到)
然后就想起了网上说的style方法,是不是属性设置的不对导致读取了framework的默认动画。so,经过一番尝试,终于成功的修改了从其他应用返回Launcher的转场动画。
style如下:
然后在LauncherActivity的theme里加上动画:
就ok啦~~!!!!!
注意: 上面说的transit值为13是和当前Activity的主题有关的(全靠摸索和试验,没找到具体代码逻辑支持)
即,你用哪个activity启动别的Activity,当你返回上一个Activity时,就会根据主题得到不同的类型。
如上图所示,当
b2ac
我注释掉主题里的windowShowWallpaper时,从其他应用返回launcher的动画就变掉了,因为framework中loadAnimation的transit值不再为13,
而变成了11,而11对应的case是:
对应的动画应该设:
。
由此可推断出,加载动画并不是固定的,而是根据Activity的属性决定的。
另外,,,,,,
我自己写的搜索activity,,从launcher启动搜索,启动方式如下:
搜索Activity的主题如下:
当我搜索到手机安装app时,点击启动app,再返回搜索Activity时,framework中loadAnimation的transit值为9,
对应的动画属性为:
所以主题里设置了这两个动画。
可能,小编解说的不太清楚,但从上面几个例子可以看出一些东西了。共勉之~~
***************************************************************************************************************************************
***************************************************************************************************************************************
另,近期任务的转场动画同样方法设置,启动动画在startActivity时,通过第二个参数传入动画的xml就好了。
退出近期任务的动画(我们改过了近期任务源码,退出也是启动Activity,so方法同上)。
近期任务代码在SystemUI中,frameworks/base/packages/SystemUI/src/com/android/systemui/recents/Recents.java中跟踪到startActivity为止。
近期任务返回应用代码在ItsRecentsActivity.java中,因为我们修改了近期任务,略有变动(源码可能在RecentsActivity.java里)。
通过最后一个参数传入动画。
由于第一次接触framework,无法写的很详细,只能通过加log来看一下代码逻辑,,,,,暂时记录到这里。
。。。哔哩哔哩哔哩。。。经过小编一番百度之后发现,
发现几种方式
1、ActivityOptions2、overridePendingTransition(int enterAnim, intexitAnim)
Launcher启动Activity时,新activity界面的出现和Launcher的退出衔接动画。
这两种方式只能实现从Launcher启动Activity的动画,从第三方应用返回Launcher还是系统动画。
这两种的实现方式都很容易百度到,随手小记,记录一下知识点。
好吧,真正的原因是,小编也在摸索中,,,
*******************************************************************************************************
*******************************************************************************************************
经过几天的摸索,从Launcher启动应用(startActivity)和从应用返回Launcher的转场动画都找到了修改点。
下面简单的介绍一下:
从Launcher启动应用转行动画
修改点在startActivity时传入:startActivity(Intent intent, @Nullable Bundle options)
第一个参数intent表示启动哪个应用,第二个参数bundle表示动画。
这里的动画小编使用xml方式:
ActivityOptions.makeCustomAnimation(this, R.anim.activity_open_enter, R.anim.activity_open_exit);
这里,第一个参数表示startActivity时,即将进入的Activity动画、第二个表示startActivity时,Launcher退出的动画。
从其他应用返回Launcher的转场动画
在网上找到说设置style的方法,实现activity退出时动画。然而Launcher这边并没有效果。。。。跟踪framework/base/services/core/java/com/android/server/wm/AppTransition.java中loadAnimation方法。
发现从第三方应用返回Launcher时,上面方法中的transit值为13,对应的case见下图:
然后根据enter标记判断出是退出的应用还是进入的应用分别拿到不同的动画,并取值framework里默认的动画。
然后,小编猜测,既然framework有默认的动画,如果改了这里,那就改了所有这种情况的动画。由于第一次接触framework层代码,没敢直接改。
(但应该可以应用自己设置这两个属性的动画,心里默默的想到)
然后就想起了网上说的style方法,是不是属性设置的不对导致读取了framework的默认动画。so,经过一番尝试,终于成功的修改了从其他应用返回Launcher的转场动画。
style如下:
然后在LauncherActivity的theme里加上动画:
就ok啦~~!!!!!
注意: 上面说的transit值为13是和当前Activity的主题有关的(全靠摸索和试验,没找到具体代码逻辑支持)
即,你用哪个activity启动别的Activity,当你返回上一个Activity时,就会根据主题得到不同的类型。
如上图所示,当
b2ac
我注释掉主题里的windowShowWallpaper时,从其他应用返回launcher的动画就变掉了,因为framework中loadAnimation的transit值不再为13,
而变成了11,而11对应的case是:
对应的动画应该设:
。
由此可推断出,加载动画并不是固定的,而是根据Activity的属性决定的。
另外,,,,,,
我自己写的搜索activity,,从launcher启动搜索,启动方式如下:
搜索Activity的主题如下:
当我搜索到手机安装app时,点击启动app,再返回搜索Activity时,framework中loadAnimation的transit值为9,
对应的动画属性为:
所以主题里设置了这两个动画。
可能,小编解说的不太清楚,但从上面几个例子可以看出一些东西了。共勉之~~
***************************************************************************************************************************************
***************************************************************************************************************************************
另,近期任务的转场动画同样方法设置,启动动画在startActivity时,通过第二个参数传入动画的xml就好了。
退出近期任务的动画(我们改过了近期任务源码,退出也是启动Activity,so方法同上)。
近期任务代码在SystemUI中,frameworks/base/packages/SystemUI/src/com/android/systemui/recents/Recents.java中跟踪到startActivity为止。
近期任务返回应用代码在ItsRecentsActivity.java中,因为我们修改了近期任务,略有变动(源码可能在RecentsActivity.java里)。
通过最后一个参数传入动画。
由于第一次接触framework,无法写的很详细,只能通过加log来看一下代码逻辑,,,,,暂时记录到这里。
相关文章推荐
- Activity转场动画
- Android开发之Activity与界面的转场动画
- android 学习使用Activity转场动画及shareElement
- Activity转场动画效果
- Android5.0之Activity的转场动画
- Android5.0之Activity的转场动画
- Activity 转场动画踩坑
- Activity与Fragment的转场动画.
- Android5.0之Activity的转场动画
- Android 转场动画+Adapter启动Activity
- 安卓开发小技巧---如何去掉Activity的转场动画
- Android5.0之Activity的转场动画
- [转]Android Activity和Fragment的转场动画
- Android Activity转场动画
- 浅谈View动画及Activity的华丽转场
- 实现Activity间的共享控件转场动画
- 你所不知道的Activity转场动画——ActivityOptions,activity转场动画
- Android activity 转场动画ActivityOptions
- Android5.0之Activity的转场动画
- 你所不知道的Activity转场动画——ActivityOptions