关于activity切换,推出和覆盖的实现和区别

现在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文件声明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值