zoukankan      html  css  js  c++  java
  • 改变Activity启动时的默认动画

    why

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

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

    how

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

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


                                         修改windowAnimationStyle的方式


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

    2. 通过overridePendingTransition(int enterAnim, int exitAnim)
      相关代码如下:


                        overridePendingTransition的方式


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

      <item name="android:windowBackground">@android:color/transparent</item>
      <item name="android:windowIsTranslucent">true</item>
    3. 近日在看youtube视频时发现的写法,代码如下:
           
                               通过特殊的Bundle来startActivity


    感兴趣的同学可以观看下完整视频,还有些别的关于ActivityOptions的使用方式,另外需要注意下这种方式是API Level 16才引入的。

    总结

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

  • 相关阅读:
    【Leetcode_easy】720. Longest Word in Dictionary
    【Leetcode_easy】717. 1-bit and 2-bit Characters
    【Leetcode_easy】709. To Lower Case
    【Leetcode_easy】707. Design Linked List
    【Leetcode_easy】706. Design HashMap
    第38课 栈和队列的相互转化
    第7章 网络层协议(4)_IGMP协议
    第7章 网络层协议(3)_ARP协议
    第33课 双向循环链表的实现
    第32课 Linux内核链表剖析
  • 原文地址:https://www.cnblogs.com/xiaoweiz/p/5322298.html
Copyright © 2011-2022 走看看