Android 2.0后常用界面切换效果

在Android 2.0之后有了overridePendingTransition(),其中里面两个参数,一个是前一个activity的退出两一个activity的进入。

以下是自定义动画的效果图:



这里写图片描述

Activity中核心实现代码:
    public void initView() {
        mTurnBtn = (Button) findViewById(R.id.turn_btn);
        mTurnBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this, Main2Activity.class);
                startActivity(intent);
                //淡入淡出效果
                // overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out);

                //滑动效果
                // overridePendingTransition(android.R.anim.slide_in_left,android.R.anim.slide_out_right);

                //自定义效果
                //overridePendingTransition(R.anim.zoomin, R.anim.zoomout);
            }
        });
    }
实现淡入淡出的效果

overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out);

由左向右滑入的效果

overridePendingTransition(Android.R.anim.slide_in_left,android.R.anim.slide_out_right);

实现自定义效果,即类似iphone的进入和退出时的效果

overridePendingTransition(R.anim.zoomin, R.anim.zoomout);

新建zoomin.xml文件

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:Android="http://schemas.android.com/apk/res/android"
        Android:interpolator="@android:anim/decelerate_interpolator">
    <scale Android:fromXScale="2.0" android:toXScale="1.0"
           Android:fromYScale="2.0" android:toYScale="1.0"
           Android:pivotX="50%p" android:pivotY="50%p"
           Android:duration="@android:integer/config_mediumAnimTime" />
</set>

新建zoomout.xml文件

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:Android="http://schemas.android.com/apk/res/android"
        Android:interpolator="@android:anim/decelerate_interpolator"
        Android:zAdjustment="top">
    <scale Android:fromXScale="1.0" android:toXScale=".5"
           Android:fromYScale="1.0" android:toYScale=".5"
           Android:pivotX="50%p" android:pivotY="50%p"
           Android:duration="@android:integer/config_mediumAnimTime" />
    <alpha Android:fromAlpha="1.0" android:toAlpha="0"
            Android:duration="@android:integer/config_mediumAnimTime"/>
</set>  

重点的就是制作合适的Animation.

优化

这样的做法,需要在每次Activity启动或销毁时调用 overridePendingTransition(),代码量太大。
系统提供属性设置动画效果,使用自定义主题应用于整个项目..

具体代码如下:

打开res/values/styles.xml文件,增加如下代码:

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light" >
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>

        <!--设置windowAnimationStyle属性-->
        <item name="android:windowAnimationStyle">@style/MyAnimation</item>

    </style>

    <style name="MyAnimation">
        <!--新启动Acticity进入-->
        <item name="android:activityOpenEnterAnimation">@anim/zoomin</item>
        <!--原Activity退出-->
        <item name="android:activityOpenExitAnimation">@anim/zoomout</item>
        <!--原Activity返回-->
        <item name="android:activityCloseEnterAnimation">@anim/zoomin</item>
        <!--Activity销毁-->
        <item name="android:activityCloseExitAnimation">@anim/zoomout</item>
    </style>

</resources>



打开AndroidManifest.xml清单文件,配置主题


如果对Android 5.X界面切换动画效果以及过渡动画有兴趣可以参照:
http://blog.csdn.net/Abrazen_zz/article/details/52577515

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值