Activity常用跳转效果

Activity的切换需要在startActivity()或finish()函数之后紧跟函数(Fragment开头加getActivity(), 其他的将Context的对象强转为Activity):

          overridePendingTransition(int enterAnim, int exitAnim);

          getActivity().overridePendingTransition(int enterAnim, int exitAnim);

          ((Activity) context).overridePendingTransition(int enterAnim, int exitAnim);

其中,enterAnim和exitAnim是位于res/anim中的定义切换效果的文件,enterAnim定义了进入屏幕的Activity的动画效果,exitAnim定义了移出屏幕的动画效果。

Android的开发过程中,屏幕的坐标定义为:左上角为原点(0,0) ,水平向右为X正半轴,竖直向下为Y正半轴,而Activity的原点坐标(0,0)也是位于左上角;

当Activity从屏幕的右侧进入屏幕的过程,相当于Activity的X坐标由100%p到0的过程(见下图灰色示意部分,对应文件push_left_in.xml);

当Activity从屏幕的左侧进入屏幕的过程,相当于Activity的X坐标由-100%p到0的过程;(见下图粉色示意部分,对应文件push_right_in.xml);

当Activity从屏幕的右侧移出屏幕的过程,相当于Activity的X坐标由0到100%p的过程;(见下图红色示意部分,对应文件push_left_out.xml);

当Activity从屏幕的左侧移出屏幕的过程,相当于Activity的X坐标由0到-100%p的过程;(见下图绿色示意部分,对应文件push_right_out.xml);



push_left_in.xml

<?xml version="1.0"encoding="utf-8"?>

<setxmlns:android="http://schemas.android.com/apk/res/android">

    <translate

        android:duration="270"

        android:fromXDelta="100%p"

        android:interpolator="@android:anim/accelerate_interpolator"

        android:toXDelta="0"/>

</set>

----------------------------------------------------------------------------------------------------------------------

push_left_out.xml

<?xml version="1.0"encoding="utf-8"?>

<setxmlns:android="http://schemas.android.com/apk/res/android">

    <translate

        android:duration="270"

        android:fromXDelta="0"

        android:interpolator="@android:anim/accelerate_interpolator"

        android:toXDelta="100%p"/>

</set>

----------------------------------------------------------------------------------------------------------------------

push_right_in.xml

<?xml version="1.0"encoding="utf-8"?>

<setxmlns:android="http://schemas.android.com/apk/res/android">

    <translate

        android:duration="270"

        android:fromXDelta="-100%p"

        android:interpolator="@android:anim/accelerate_interpolator"

        android:toXDelta="0"/>

</set>

----------------------------------------------------------------------------------------------------------------------

push_right_out.xml

<?xml version="1.0"encoding="utf-8"?>

<setxmlns:android="http://schemas.android.com/apk/res/android">

    <translate

        android:duration="270"

        android:fromXDelta="0"

        android:interpolator="@android:anim/accelerate_interpolator"

        android:toXDelta="-100%p"/>

</set>



当Activity从屏幕的上方进入屏幕的过程,相当于Activity的Y坐标由-100%p到0的过程(见下图绿色示意部分,对应文件push_top_in.xml);

当Activity从屏幕的下方进入屏幕的过程,相当于Activity的Y坐标由100%p到0的过程(见下图紫色示意部分,对应文件push_bottom_in.xml);

当Activity从屏幕的上方移出屏幕的过程,相当于Activity的Y坐标由0到-100%p的过程(见下图橙色示意部分,对应文件push_top_out.xml);

当Activity从屏幕的下方移出屏幕的过程,相当于Activity的Y坐标由0到100%p的过程(见下图灰色示意部分,对应文件push_bottom_out.xml);


push_top_in.xml

<?xml version="1.0"encoding="utf-8"?>

<setxmlns:android="http://schemas.android.com/apk/res/android">

    <translate

        android:duration="270"

        android:fromYDelta="-100%p"

        android:interpolator="@android:anim/accelerate_interpolator"

        android:toYDelta="0"/>

</set>

----------------------------------------------------------------------------------------------------------------------

push_top_out.xml

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <translate

        android:duration="270"

        android:fromYDelta="0"

        android:interpolator="@android:anim/accelerate_interpolator"

        android:toYDelta="-100%p" />

</set>

----------------------------------------------------------------------------------------------------------------------

push_bottom_in.xml

<?xml version="1.0"encoding="utf-8"?>

<setxmlns:android="http://schemas.android.com/apk/res/android">

    <translate

        android:duration="270"

        android:fromYDelta="100%p"

        android:interpolator="@android:anim/accelerate_interpolator"

        android:toYDelta="0"/>

</set>

----------------------------------------------------------------------------------------------------------------------

push_bottom_out.xml

<?xml version="1.0"encoding="utf-8"?>

<setxmlns:android="http://schemas.android.com/apk/res/android">

    <translate

        android:duration="270"

        android:fromYDelta="0"

        android:interpolator="@android:anim/accelerate_interpolator"

        android:toYDelta="100%p"/>

</set>

注意,切换方法overridePendingTransition只能在startActivity和finish方法之后调用。 第一个参数为第一个Activity离开时的动画,第二参数为所进入的Activity的动画效果 淡入淡出效果 overridePendingTransition(R.anim.fade, R.anim.hold); 放大淡出效果 overridePendingTransition(R.anim.my_scale_action,R.anim.my_alpha_action); 转动淡出效果 overridePendingTransition(R.anim.scale_rotate,R.anim.my_alpha_action); 转动淡出效果 overridePendingTransition(R.anim.scale_translate_rotate,R.anim.my_alpha_action); 左上角展开淡出效果 overridePendingTransition(R.anim.scale_translate,R.anim.my_alpha_action); 压缩变小淡出效果 overridePendingTransition(R.anim.hyperspace_in,R.anim.hyperspace_out); 右往左推出效果 overridePendingTransition(R.anim.push_left_in,R.anim.push_left_out); 下往上推出效果 overridePendingTransition(R.anim.push_up_in,R.anim.push_up_out); 左右交错效果 overridePendingTransition(R.anim.slide_left,R.anim.slide_right); 放大淡出效果 overridePendingTransition(R.anim.wave_scale,R.anim.my_alpha_action); 缩小效果 overridePendingTransition(R.anim.zoom_enter,R.anim.zoom_exit); 上下交错效果 overridePendingTransition(R.anim.slide_up_in,R.anim.slide_down_out); Activity的切换动画指的是从一个activity跳转到另外一个activity时的动画。 {它包括两个部分: 一部分是第一个activity退出时的动画; 另外一部分时第二个activity进入时的动画; 在Android的2.0版本之后,有了一个函数来帮我们实现这个动画。这个函数就是overridePendingTransition j这个函数有两个参数,一个参数是第一个activity退出时的动画,另外一个参数则是第二个activity进入时的动画。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值