现在android电商项目中activity的切换,逐步模仿iphone系统的左腿右出的形式,可以参考 京东,淘宝的app 页面切换模式,当然实现的方法很多种,下面方法为此方法之一:
声明:参考/转载
(1)http://www.oschina.net/code/snippet_4873_4772
(2)http://blog.youkuaiyun.com/u012301841/article/details/46920809
1.在styesx.xml文件中加入
<style name="FeelyouWindowAnimTheme" parent="@android:style/Animation">
<item name="android:activityOpenEnterAnimation">@anim/in_from_right</item>
<item name="android:activityOpenExitAnimation">@anim/out_to_left</item>
<item name="android:activityCloseEnterAnimation">@anim/in_from_left</item>
<item name="android:activityCloseExitAnimation">@anim/out_to_right</item>
<item name="android:windowExitTransition" tools:targetApi="lollipop">@anim/anim_activity_close_for_alpha</item>
<item name="android:windowEnterTransition" tools:targetApi="lollipop">@anim/push_bottom_in</item>
</style>
现在假设有两个Activity A 和 B,在A中可以启动B。同时,A和B的theme属性均设置为上面定义的属性。那么,以上动画的发生时机如下:
(1)当A启动B时,A退出,B进入,A退出时的动画名称为android:activityOpenExitAnimation,动画文件为
R.anim.out_to_left,B进入时的动画名称为android:activityOpenEnterAnimation, 动画文件为R.anim.in_from_right。
(2)当B结束时,B退出,A进入。B退出的动画名称为android:activityCloseExitAnimation, 动画文件为R.anim.out_to_right, A进入时的动画名称为android:activityCloseEnterAnimation, 动画文件为R.anim.in_from_left。
2.四大动画布局文件
in_from_right.xml文件
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:fromXDelta="100%p"
android:interpolator="@android:anim/accelerate_interpolator"
android:toXDelta="0%p" >
</translate>
in_from_left.xml文件
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:fromXDelta="-100%p"
android:interpolator="@android:anim/accelerate_interpolator"
android:toXDelta="0%p" >
</translate>
out_to_left.xml文件
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:fromXDelta="0%p"
android:toXDelta="-100%p"
android:interpolator="@android:anim/accelerate_interpolator" >
</translate>
out_to_right.xml文件
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:fromXDelta="0%p"
android:toXDelta="100%p"
android:interpolator="@android:anim/accelerate_interpolator" >
</translate>
3.在AndroidManifest.xml文件中声明
<activity
android:name=".ProductDetailActivity"
android:theme="@style/AnimActivityTheme"
/>
4.运行程序,就可以看到效果。
注:以上的方式是以一种覆盖叠加方式来切换新的activity的
-----------我是丑陋的分割线----------------------
为了达到推出那种效果,我们还是得用到上面提到的4大布局xml文件
怎么个引用法
在启动页面的时候,引用api
private void gotoWebActivity(String title, String url) {
if (url != null && !"".equals(url)) {
Intent intent = new Intent(mContext, WebActivity.class);
intent.putExtra("title", title);
intent.putExtra("url", url);
mContext.startActivity(intent);
mContext.overridePendingTransition(R.anim.in_from_right,
R.anim.out_to_left);
}
}
最主要的是这一句mContext.overridePendingTransition(R.anim.in_from_right,
R.anim.out_to_left);
这样就达到推出的效果
关闭activity是时候也要引用到
getActivity().finish();
getActivity().overridePendingTransition(R.anim.in_from_left, R.anim.out_to_right);
要在finish()后面
注意:此方法不用在AndroidManifest.xml文件声明