实现Activity界面切换动画

IOS页面切换动画,系统默认实现了,push从右到左滑入,pop从左到右划出。

安卓呢,需要手动去实现,实现的方式有两种:一种是通过代码实现,另一种是通过Theme实现。两种实现方式最好都会用到anim里的动画配置文件。

先说第一种:

Intent intent=new Intent(this,SecondActivity.class);

startActivity(intent);

overridePendingTransition(R.anim.enter_anim,R.anim.exit_anim);

代码实现的话就是在startActivity后面加上overridePendingTransition函数来实现。overridePendingTransition的第

一个参数代码第二个新页面进入的动画,第二个参数代码,第一个界面将要失去的动画,同理pop一个界面是在finish函数后面紧跟

overridePendingTransition这个函数,第一个参数就代表第一个界面将要显示的动画,第二个参数代表第二个界面将要离开时候的动画。

再说说第二种实现方式,其实也很简单:

在AndroidManifest.xml里的application或者activity里增加主题Theme,这个主题里包含动画的方式。在application增加动画主题的话,

将会app里的每一个activity都采用这种动画,如果同时activity也增加了动画的主题,将覆盖掉application的动画样式。也可以单独在activity

里增加主题实现动画;如:

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/Theme.Normal">
    <activity android:name=".ui.activity.SplashActivity"
        android:theme="@style/Theme.Splash">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

其中android:theme=“@style/Theme.Normal”里实现了动画,后面我给大家贴出代码;其中SplashAcitivity我不想用统一的动画,

所以单独设置

android:theme="@style/Theme.Splash"

在styles里增加

<style name="Theme.Normal" parent="Theme.AppCompat.DayNight.NoActionBar">
    <item name="android:windowAnimationStyle">@style/default_animation</item>
</style>
其中,
@style/default_animation

<style name="default_animation" mce_bogus="1" parent="@android:style/Animation.Activity">
    <item name="android:activityOpenEnterAnimation">@anim/push_left_in</item>
    <item name="android:activityOpenExitAnimation">@anim/hold</item>
    <item name="android:activityCloseEnterAnimation">@anim/hold</item>
    <item name="android:activityCloseExitAnimation">@anim/pop_left_out</item>
</style>

在anim里创建push_left_in.xml文件

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
   <translate android:fromXDelta="100%p" android:toXDelta="0"
      android:duration="300" />
</set>
其他几个文件hold.xml;pop_left_out.xml文件

如下:

<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:fromXDelta="0"
    android:toXDelta="0"
    android:duration="300" />

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="300"
        android:fromXDelta="0"
        android:toXDelta="100%p" />
</set>
以上代码就实现了动画。这些动画可以叠加,大家可以百度一下。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值