如何改变activity启动时的默认动画

2017-12-25  本文已影响0人  Sunny君907

why

在开发中我们可能需要改变这一行为,一般基于2种理由:

产品的spec这么要求的;

想自己控制这个行为,因为在Android设备上可能每个的这一默认行为都不一样,厂商可以很容易修改它,从而导致app在使用体验上不一致。

how

笔者所知道的主要有3种方式,下面我们就一个个来看看。

通过theme/style来修改,代码如下:

修改windowAnimationStyle的方式

但是实际测试发现,不论是改activity的各种animation还是window的,效果都不是很好,可能在某些设备上ok的,但在另一些设备上又不好用,另外这种方式也不是很灵活,所以不推荐使用。

通过overridePendingTransition(int enterAnim, int exitAnim)

相关代码如下:

overridePendingTransition的方式

笔者平时开发中用的是这种方法,目前还没遇到什么兼容性问题,work的很好,另外由于是写在代码中的也比较灵活,推荐。注意下实际中可能还需要在act theme中增加如下代码:

@android:color/transparenttrue

近日在看youtube视频时发现的写法,代码如下:

Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("mgj://sub"));
        Bundle translateBundle = ActivityOptionsCompat.makeCustomAnimation(MainActivity.this,android.R.anim.fade_in,0).toBundle();
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN){
            startActivity(intent,translateBundle);
        }

通过特殊的Bundle来startActivity

注意下这种方式是API Level 16才引入的。

总结

以上是实际开发中可能用到的3种方式,但综合来看还是第2种方式最好用,也最灵活。注意,以上这些动画准确地讲应该是属于window animations

上一篇下一篇

猜你喜欢

热点阅读