在公司项目时,遇到一个问题,在此总结一下
当隐式启动一个Activity的时候,会有一个默认的启动动画,是个缩放效果,就造成每次别的应用启动音乐时,会有明显的动画效果,与设计不符,就需要去除掉默认的动画,查阅了相关的转场动画,在此记录一下
转场动画的设置方式
- 代码设置
通过overridePendingTransition
方法进行设置,代码如下
先创建两个动画的xml文件
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="2000"
android:fromXDelta="0"
android:toXDelta="-100%p"/>
</set>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="2000"
android:fromXDelta="100%p"
android:toXDelta="0"/>
</set>
保存的位置在res-anim文件夹下
在代码中引用:
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
需要注意的地方
- 它只在android2.0以及以上版本上适用
- 它必需紧挨着startActivity()或者finish()函数之后调用”
使用这种方式就有一个问题,如果别的引用通过隐式调用启动我们的应用,没办法使用这种方式,就需要用到下面的方式,使用主题的方式
- xml文件设置主题的方式
<style name="AppTheme" parent="@style/Theme.AppCompat.NoActionBar">
<item name="android:windowAnimationStyle">@style/Animation</item>
</style>
<style name="Animation">
<item name="android:activityOpenEnterAnimation">@null</item>
<item name="android:activityOpenExitAnimation">@null</item>
<item name="android:activityCloseEnterAnimation">@null</item>
<item name="android:activityCloseExitAnimation">@null</item>
<item name="android:taskOpenEnterAnimation">@null</item>
<item name="android:taskOpenExitAnimation">@null</item>
<item name="android:taskCloseEnterAnimation">@null</item>
<item name="android:taskCloseExitAnimation">@null</item>
<item name="android:taskToFrontEnterAnimation">@null</item>
<item name="android:taskToFrontExitAnimation">@null</item>
<item name="android:taskToBackEnterAnimation">@null</item>
<item name="android:taskToBackExitAnimation">@null</item>
</style>
application使用这个主题就可以,就会清除Activity的动画,当然item中你可以指定各种方式的动画
如果不想给整个app设置上面的,只想对某一个activity设置
<activity android:name=".activity_shop.ShopHomeActivity"
android:theme="@style/Animation"/>
可以单独的指定主题