现在的位置: 首页 > 综合 > 正文

自定义Activity切换效果

2017年12月07日 ⁄ 综合 ⁄ 共 2305字 ⁄ 字号 评论关闭

通常,在应用开发过程中,为了美观和炫酷,可以设定每个Activity切换的时候的效果,比如旋转进入,或者是从上面下面,左边右边进入之类的。这里记录一下如何通过overridePendingTransition函数实现切换效果。

实现切换效果主要在两个地方进行处理。一:在startActivity后进行设置一次,Activity启动效果。二:在onBackPressed中进行一次设置,设置Activity返回效果。代码如下:

启动一个Activity:

	Toast.makeText(MainActivity.this, "清除缓存", Toast.LENGTH_SHORT).show();
	Intent intent = new Intent(MainActivity.this, ClearCache.class);
	startActivity(intent);
	overridePendingTransition(<span style="color:#FF0000;">R.anim.translate_vertical_in</span>, <span style="color:#FF0000;">R.anim.translate_vertical_out</span>);

其中R.anim.translate_vertical_in和 R.anim.translate_vertical_out 分别为启动Activity进入的效果和当前Activity退出效果。

R.anim.translate_vertical_in为Activity进入的效果,从下方移动出来,相应R.anim.translate_vertical_out为当前Activity移出效果。

<span style="color:#33CC00;"><?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate 
        android:fromXDelta="0"
        android:toXDelta="0"
        android:fromYDelta="100%"
        android:toYDelta="0"
        android:duration="500"
        />
</set>

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate 
        android:fromXDelta="0"
        android:toXDelta="0"
        android:fromYDelta="0"
        android:toYDelta="-100%"
        android:duration="500"
        />
</set></span>

同时,在Activity返回的时候,也应该处理过渡效果。处理onBackPressed消息

@Override
    public void onBackPressed() {
        // TODO Auto-generated method stub
        super.onBackPressed();
       overridePendingTransition(R.anim.translate_vertical_return_in,  R.anim.translate_vertical_return_out);
    }

其中R.anim.translate_vertical_return_in,  R.anim.translate_vertical_return_out分别是在Activity退出的时候,当前Activity退出的效果和之前Activity进入的效果。

R.anim.translate_vertical_return_in为之前Activity进入的效果,

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate 
        android:fromXDelta="0"
        android:toXDelta="0"
        android:fromYDelta="-100%"
        android:toYDelta="0"
        android:duration="500"
        />
</set>

R.anim.translate_vertical_return_out为当前Activity淡出的效果。

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromXDelta="0"
        android:toXDelta="0"
        android:fromYDelta="0"
        android:toYDelta="100%"
        android:duration="500"
        />
</set>

这里的效果都是一种Animation,这里的实现比较简单,只有简单的translate,如果需要复杂的效果,可以在set中添加多个效果,在运行的时候,AnimationSet会将之内的所有的Animation效果进行执行。

抱歉!评论已关闭.