Activity切换动画

Activity切换

默认动画是系统自带的,各个ROM不尽相同,就我而言是,flyme是新进入的一个从右至左飞到屏幕上,或从左至右飞出,很难说难看与否,但是某些时候,我还是想要以特定的方式飞入飞出,如网易云音乐安卓客户端闪屏页到主界面的过渡,就很棒。
说了这么多,到底应该如何自定义Activity切换动画。

为单个Activity设置

调用overridePendingTransition()方法
overridePendingTransition(R.anim.activity_in,R.anim.activity_out);
为单个activity设置动画即可实现自定义的连贯的activity动画。

为所有activity设置

可以通过主题来指定activity切换动画

清单文件:

<activity
    android:name=".ui.activity.SplashActivity"
    android:configChanges="orientation|keyboardHidden|screenSize"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>

        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>

styles.xml

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <!--activity动画-->
    <item name="android:windowAnimationStyle">@style/winAnim</item>
</style>

<!--设置activity动画-->
<style name="winAnim" parent="@android:style/Animation.Activity">
    <item name="android:activityOpenEnterAnimation">@anim/activity_in</item>
    <item name="android:activityOpenExitAnimation">@anim/activity_out</item>
    <item name="android:activityCloseEnterAnimation">@anim/activity_in</item>
    <item name="android:activityCloseExitAnimation">@anim/activity_out</item>
</style>

这种方法可以实现对所有activity的默认切换效果更改,也可以只更改单个activity,这取决于更改了activity设置的theme还是整个application的theme。
配置文件的方式更加灵活,建议使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一些常见的activity切换动画代码: 1. 淡入淡出动画: 在styles.xml中定义: ``` <style name="Fade"> <item name="android:windowEnterAnimation">@android:anim/fade_in</item> <item name="android:windowExitAnimation">@android:anim/fade_out</item> </style> ``` 在AndroidManifest.xml中应用: ``` <activity android:name=".MyActivity" android:theme="@style/Fade" /> ``` 2. 左右滑动动画: 在styles.xml中定义: ``` <style name="Slide"> <item name="android:windowEnterAnimation">@anim/slide_right_in</item> <item name="android:windowExitAnimation">@anim/slide_left_out</item> </style> ``` 在AndroidManifest.xml中应用: ``` <activity android:name=".MyActivity" android:theme="@style/Slide" /> ``` slide_right_in.xml: ``` <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="100%" android:toXDelta="0%" android:duration="300" /> <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" /> </set> ``` slide_left_out.xml: ``` <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0%" android:toXDelta="-100%" android:duration="300" /> <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="300" /> </set> ``` 3. 缩放动画: 在styles.xml中定义: ``` <style name="Zoom"> <item name="android:windowEnterAnimation">@anim/zoom_in</item> <item name="android:windowExitAnimation">@anim/zoom_out</item> </style> ``` 在AndroidManifest.xml中应用: ``` <activity android:name=".MyActivity" android:theme="@style/Zoom" /> ``` zoom_in.xml: ``` <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/decelerate_interpolator"> <scale android:fromXScale="0.0" android:toXScale="1.0" android:fromYScale="0.0" android:toYScale="1.0" android:pivotX="50%" android:pivotY="50%" android:duration="300" /> <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" /> </set> ``` zoom_out.xml: ``` <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator"> <scale android:fromXScale="1.0" android:toXScale="0.0" android:fromYScale="1.0" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" android:duration="300" /> <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="300" /> </set> ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值