前面介绍了Android中的逐帧动画和补间动画,并实现了简单的自定义动画,这一篇我们来看看如何将Android中的动画运用到实际开发中的一个场景——Activity之间跳转动画。
一、定义动画资源
如果对Android中的动画不了解,请先阅读前面几页的《Android中的动画详解系列【1】——逐帧动画》《Android中的动画详解系列【2】——飞舞的蝴蝶》《Android中的动画详解系列【3】——自定义动画研究》。
进入动画(要启动的Activity)
android:fromXDelta="100%p"
android:toXDelta="0"
android:duration="200"/>
android:fromXDelta="100%p"
android:toXDelta="0"
android:duration="200" />
退出动画(要退出的Activity)
android:fromXDelta="0"
android:toXDelta="-100%p"
android:duration="200"/>
android:fromXDelta="0"
android:toXDelta="-100%p"
android:duration="200" />
对上面代码的解释:
当前Activity退出的时候从上图手机屏幕退出到-100%p的位置,要启动的Activity进入的时候从上图手机100%p的位置进入到0的位置,0的位置就是手机屏幕可见部分。
二、添加到Activity
1、使用overridePendingTransition方法
intent =newIntent(RegistActivity.this, RegistChooseListActivity.class);
intent.putExtra("type", Constant.REGIST_CHOOSE_XIAOQU);
startActivityForResult(intent, Constant.REGIST_CHOOSE_XIAOQU);
overridePendingTransition(R.anim.push_left_in,
R.anim.push_left_out);
intent = new Intent(RegistActivity.this, RegistChooseListActivity.class);
intent.putExtra("type", Constant.REGIST_CHOOSE_XIAOQU);
startActivityForResult(intent, Constant.REGIST_CHOOSE_XIAOQU);
overridePendingTransition(R.anim.push_left_in,
R.anim.push_left_out);
2、在Theme中添加
@anim/fade_in
@anim/hold
@anim/fade_in
@anim/fade_out
@style/AnimFade
@anim/fade_in
@anim/hold
@anim/fade_in
@anim/fade_out
@style/AnimFade
三、运行效果
(切换速度太快,延迟问题,下面展示效果和真实效果不符,参考一下,自己试一下)
四、其他切换动画
1、淡入淡出效果
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="0.0"android:toAlpha="1.0"
android:duration="2000"/>
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="0.0" android:toAlpha="1.0"
android:duration="2000" />
android:interpolator="@android:anim/accelerate_interpolator"
android:fromXDelta="0"android:toXDelta="0"
android:duration="2000"/>
android:interpolator="@android:anim/accelerate_interpolator"
android:fromXDelta="0" android:toXDelta="0"
android:duration="2000" />
2、从下往上推效果
3、上下交错效果
xmlns:android="http://schemas.android.com/apk/res/android">
android:fromYDelta="100.0%p"android:toYDelta="0.0"/>
xmlns:android="http://schemas.android.com/apk/res/android">
android:fromYDelta="100.0%p" android:toYDelta="0.0" />
xmlns:android="http://schemas.android.com/apk/res/android">
android:fromYDelta="0.0"android:toYDelta="100.0%p"/>