Activity转场动画

小记:需求说要改改Launcher启动Activity时,Launcher和Activity跳转的动画,让跳转更自然。

。。。哔哩哔哩哔哩。。。经过小编一番百度之后发现,

发现几种方式

1、ActivityOptions

2、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时,就会根据主题得到不同的类型。
如上图所示,当我注释掉主题里的windowShowWallpaper时,从其他应用返回launcher的动画就变掉了,因为framework中 loadAnimationtransit值不再为 13
而变成了11,而11对应的case是:
对应的动画应该设:
由此可推断出,加载动画并不是固定的,而是根据Activity的属性决定的。
另外,,,,,,
我自己写的 搜索activity,,从launcher启动搜索,启动方式如下:
搜索Activity的主题如下:
当我搜索到手机安装app时,点击启动app,再返回搜索Activity时,framework中 loadAnimationtransit值为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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值