【Android 基础】利用主题Theme自定义Activity切换动画

本文介绍了如何通过创建动画资源文件和设置Theme来实现Activity的自定义切换效果。具体包括创建base_slide_remain.xml和base_slide_right_in.xml实现向左滑动时右侧Activity进入的效果,以及fade_in.xml和fade_out.xml实现淡入淡出效果。通过在styles.xml中定义Theme并在AndroidManifest.xml中应用到Activity,可以实现指定的动画效果。

先介绍一般常见的设置Activity切换动画的方法:

需求:当向左滑动Activity的时候,下一个Activity从右边进来

  1. 在res下新建anim文件夹,然后在里面建立base_slide_remain.xml以及base_slide_right_in.xml

    base_slide_remain.xml

<?xml version="1.0" encoding="utf-8"?>
<set>
    <translate xmlns:android="http://schemas.android.com/apk/res/android"
        android:interpolator="@android:anim/accelerate_interpolator" 
        android:duration="300" 
        android:fromXDelta="0.0" 
        android:toXDelta="0.0" />
</set>

base_slide_right_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set>
    <translate xmlns:android="http://schemas.android.com/apk/res/android"
        android:interpolator="@android:anim/accelerate_interpolator" 
        android:duration="300" 
        android:fromXDelta="100%" 
        android:toXDelta="0%" />
</set>

2.在切换Activity时设置切换动画效果:

    public void pre(View view) {
        startActivity(new Intent(this, MainActivity.class));
        overridePendingTransition(R.anim.base_slide_left_in, R.anim.base_slide_remain);
    }

    public void next(View view) {
        startActivity(new Intent(this, MainActivity.class));
        overridePendingTransition(R.anim.base_slide_right_in, R.anim.base_slide_remain);
    }

pre(View view) 和 next(View view)都是我的动作监听函数,故名思议,当向前(左)滑动的时候,调用pre()函数.反之亦然。

overridePendingTransition(orgs1,orgs2)函数中,参数一的作用是设置进来的动画,参数二是退出的动画。

利用主题Theme自定义Activity切换动画

这里演示淡入淡出的切换Activity的动画效果

  1. 在res下新建anim文件夹,并新建文件如下:

fade_in.xml

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="300"
    android:fromAlpha="0.0"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:toAlpha="1.0" />

fade_out.xml

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="300"
    android:fromAlpha="1.0"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:toAlpha="0.0" />
  1. 然后在values文件夹下的styles.xml中的resources标签内写:
    <style name="Anim_fade" parent="android:Theme.NoTitleBar">
        <item name="android:windowAnimationStyle">@style/fade</item>
    </style>

    <style name="fade" parent="@android:style/Animation.Activity">
        <item name="android:activityOpenEnterAnimation">@anim/fade_in</item>
        <item name="android:activityOpenExitAnimation">@anim/fade_out</item>
        <item name="android:activityCloseEnterAnimation">@anim/fade_in</item>
        <item name="android:activityCloseExitAnimation">@anim/fade_out</item>
    </style>

3.最后在AndroidManifest.xml中的Activity的声明上加入android:theme=”@style/Anim_fade”即可
那么关于设定的这个Acitvity的打开以及关闭都会和主题设定的切换效果一样了。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值